C#-JObject.Parse-无效的JSON

我正在使用返回JSON的API。

我有一个方法调用api,并解析所需节点的JSON响应。

到目前为止,除了最新的JSON响应似乎格式错误之外,其他所有功能都可以正常工作。

其他回复如下:

{

"Keyword":"\"marhope\"",

"TermKey":null,

"Customers":[

{

"Memberships":[ ],

"CompanyId":0,

"ObjectId":112974,

"ObjectType":"Customer",

}

]

}

我使用JObject.Parse按名称带回适当的节点。

最新的JSON响应返回为:

{

[

{

"AnimalId":9079117,

"SpeciesCode":"XX",

}

]

}

如您所见,没有“名称”,并且JSON稍微无效。

我该如何解析。对于第一个示例,我使用下面的代码,但是现在JSON没有“名称”了,我不知道该如何处理,想法?

JObject results = JObject.Parse(csr.SearchCustomer(1, 1, 870, term));

foreach (var resp in results["Customers"])

{

string obj = (string)resp["CompanyId"];

}

回答:

Jon

Skeet是正确的,第二个JSON无效:您不能直接在没有属性名称的对象内部创建数组。最好的做法是让API开发人员修复JSON。但是,如果您只是在寻找一种快速而肮脏的解决方法,则可以从无效的JSON中删除第一个括号和最后一个括号,然后使用解析为数组JArray.Parse

string json = @"{

[

{

""AnimalId"":9079117,

""SpeciesCode"":""XX"",

}

]

}";

json = json.Substring(1, json.Length - 2);

JArray array = JArray.Parse(json);

foreach (JObject item in array.Children<JObject>())

{

Console.WriteLine("AnimalId: " + item["AnimalId"]);

Console.WriteLine("SpeciesCode: " + item["SpeciesCode"]);

}

以上是 C#-JObject.Parse-无效的JSON 的全部内容, 来源链接: utcz.com/qa/425986.html

回到顶部