首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态JObject -解析无效的JSON

动态JObject -解析无效的JSON
EN

Stack Overflow用户
提问于 2016-12-04 22:54:42
回答 2查看 1.3K关注 0票数 3

考虑到我有以下几点:

代码语言:javascript
复制
{ "version": "1.0" }

我可以将其解析为动态JObject并使用:

代码语言:javascript
复制
dynamic result = JObject.Parse(myJson);
string verison = result.Version; //works <3

但是服务器返回以下json

代码语言:javascript
复制
{ { "version": "1.0" } }

newtonsoft认为这个json是有效的,但是不能再访问版本了:

代码语言:javascript
复制
dynamic result = JObject.Parse(myJson);
string verison = result.Version; //error

当动态Version是雪崩时,如何访问result

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-05 00:21:57

{ { "version": "1.0" } }这个json被newtonsoft认为是有效的

这是不正确的,您将无法解析这一点,并将收到Newtonsoft.Json.JsonReaderException类型的异常(带有:无效的属性标识符:{ )。(路径'',第1行,位置2.)

无效的JSON:

代码语言:javascript
复制
{ { "version": "1.0" } }

有效的JSON:

代码语言:javascript
复制
{ "version": "1.0" }

(如果您有服务器控件,我建议您在服务器上执行必要的步骤以返回有效的JSON)

但是,在最坏的情况下,您可以通过在解析前删除第一个字符{和最后一个字符}来使这个JSON无效。例如:

代码语言:javascript
复制
 var myJson = json.Substring(1, json.Length - 2);

 dynamic result = JObject.Parse(myJson);
 string version = result.version;

这里的json是包含无效JSON的原始响应。

还请注意,对于您提供的JSON,您必须使用小写version作为result.version__。动态属性名必须与中的完全匹配

票数 5
EN

Stack Overflow用户

发布于 2016-12-04 23:05:31

我想你在“版本”中的大写字母"V“很麻烦。应该是"result.version“

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40964686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档