考虑我有以下 json:
{ "version": "1.0" }
Run Code Online (Sandbox Code Playgroud)
我可以将其解析为动态 JObject 并使用:
dynamic result = JObject.Parse(myJson);
string verison = result.Version; //works <3
Run Code Online (Sandbox Code Playgroud)
但服务器返回以下json
{ { "version": "1.0" } }
Run Code Online (Sandbox Code Playgroud)
newtonsoft 认为此 json 有效,但无法再访问版本:
dynamic result = JObject.Parse(myJson);
string verison = result.Version; //error
Run Code Online (Sandbox Code Playgroud)
Version
onltdynamicresult
可用时如何访问?
{ { "version": "1.0" } }
newtonsoft 认为该 json 有效
这是不正确的,您将无法解析它,并且会收到类型异常Newtonsoft.Json.JsonReaderException
(带有:无效的属性标识符字符:{.Path '',第 1 行,位置 2。)
无效的 JSON:
{ { "version": "1.0" } }
Run Code Online (Sandbox Code Playgroud)
有效的 JSON:
{ "version": "1.0" }
Run Code Online (Sandbox Code Playgroud)
(如果您有服务器控制权,我建议您在服务器上执行必要的步骤以返回有效的 JSON)
但是,在最坏的情况下,您可以通过在解析之前删除第一个字符{
和最后一个字符来使这个无效的 JSON 有效。}
例如像这样:
var myJson = json.Substring(1, json.Length - 2);
dynamic result = JObject.Parse(myJson);
string version = result.version;
Run Code Online (Sandbox Code Playgroud)
这里json
是包含无效 JSON 的原始响应。
另请注意,对于您提供的 JSON,您必须使用小写字母version
作为result.version
。动态属性名称必须与 JSON 中的名称完全匹配
归档时间: |
|
查看次数: |
1496 次 |
最近记录: |