我试图用Newtonsoft包解析一个JSON字符串。
来自“精英危险伙伴”界面。
一切似乎都很好,但现在我已经确定了
结果JSON-对象中不存在两个数组。
我的解析代码:
String json = response.Json ?? "{}";
JObject m_joCompanion = JObject.Parse(json);您可以下载这里的JSON字符串。
缺失的部分是
“lastStarport”-“船舶”-“shipyard_list”
和
“lastStarport”-“船舶”-“unavailable_list”
如果我使用https://jsonformatter.curiousconcept.com/联机解析字符串,所有数据都是可见的。
有谁知道是怎么回事,或者怎么得到丢失的数据?
谢谢
发布于 2016-05-10 20:44:41
请注意: JSON文件是7400+行长的,所以我不知道您是否希望直接发布,也许OP可以将其发布到pastebin或其他地方。
您使用的是什么.NET版本和Newtonsoft.Json版本?我尝试使用.NET 4.5.2和Newtonsoft.Json版本8.0.3,我可以很好地导航到这些对象。
我运行了以下命令:
var jsonText = File.ReadAllText(@"C:\Users\me\Downloads\companion.json");
var m_joCompanion = JObject.Parse(jsonText);
Console.WriteLine(m_joCompanion["lastStarport"]["ships"]["shipyard_list"]);
Console.WriteLine(m_joCompanion["lastStarport"]["ships"]["unavailable_list"]);它肯定会输出一些数据。您在文件中发布的内容与您的response.Json属性在编码上有什么不同吗?
发布于 2016-05-11 06:52:16
下一次尝试:)
好的,我发现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());
}我得到了对象的输出/提示:
但我没有船资料,也没有它的一个子结构
我不知道问题出在哪里。你有小费吗?
编辑:
我在https://jsonformatter.curiousconcept.com/上做了另一个an转换了标准:
RFC 7159 :5名儿童(w/o船-数据)
RFC 4627 :6名儿童(船舶-现有数据)
我能在Newtonsoft换一下这个吗?
编辑2
我试过了,而且成功了!
Newtonsoft.Json.Linq.JObject test = JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(json);但是,我仍然不明白为什么旧版本的.Parse()不能在我的系统上工作:-/
https://stackoverflow.com/questions/37148212
复制相似问题