我正在尝试使用Newtonsoft包解析JSON字符串
它来自"精英危险伙伴"界面
一切似乎都很好,但现在我已经确定了
结果JSON对象中不存在两个数组。
我的解析代码:
String json = response.Json ?? "{}";
JObject m_joCompanion = JObject.Parse(json);
您可以在此处下载JSON字符串。
缺少的部件是
"lastStarport"-"ships"-"shipyard_list"
和
"lastStarport"-"ships"-"unavailable_list"
如果我使用https://jsonformatter.curiousconcept.com/所有数据都是可见的。
有人知道哪里出了问题,或者如何获得丢失的数据吗?
感谢
请注意:JSON文件有7400多行长,所以我不知道你是否想直接发布,也许OP可以发布到pastebin或其他什么地方。
什么。NET版本和Newtonsoft版本。Json你在用吗?我试着用。NET 4.5.2和Newtonsoft。Json版本8.0.3和我可以很好地导航到这些对象。
我运行了以下内容:
var jsonText = File.ReadAllText(@"C:UsersmeDownloadscompanion.json");
var m_joCompanion = JObject.Parse(jsonText);
Console.WriteLine(m_joCompanion["lastStarport"]["ships"]["shipyard_list"]);
Console.WriteLine(m_joCompanion["lastStarport"]["ships"]["unavailable_list"]);
它肯定会输出一些数据。你在文件中发布的内容和你的回复在编码或其他方面有什么不同吗。Json财产?
下一次尝试:-)
好的,我发现VS持有错误的dll版本(不知道为什么)
然而,现在我正在开发正确的版本(在bin路径中找到v8.0.3.19514),但这并没有解决我的问题:-(
我做了以下测试:
Debug.Print(m_joCompanion["lastStarport"].Children().Count());
foreach (var item in m_joCompanion["lastStarport"].Children())
{
Debug.Print(item.ToString());
}
我得到了这些对象的输出/提示:
- lastStarport有5个孩子(应该是6岁!)
- 子级1:"id":"3226125568"
- child 2:"name":"田中终点站"
- 儿童3:"派系":"独立"
- 儿童4:"商品":[]
- 子级5:"模块":{}
但我没有得到(船只)数据或其子结构
我不知道问题出在哪里。你有建议吗?
编辑:
我又做了一次https://jsonformatter.curiousconcept.com/转换了标准:
RFC 7159:5子级(w/o装运数据)
RFC 4627:6子级(现有船舶数据)
我可以在Newtonsoft换这个吗?
编辑2
我试过了,效果很好!
Newtonsoft.Json.Linq.JObject test = JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(json);
但我仍然不明白为什么旧版本带有。解析()在我的系统上不工作:-/