我正在连接外部API,(给定参数),在JSON中打印结果集。目标是将此JSON转换为可读值并将它们添加到对象数组中。它是一个UWP应用程序,因此我在互联网上找到的一些旧库不再可用。以下是获取JSON然后尝试解析它的代码块:
private void beginWork()
{
string feed_data = getFeed().Replace(@"\", "").Trim(new char[1] { '"' });
Debug.WriteLine(feed_data); // <-- THIS PRINTS OUT THE CORRECTLY FORMATTED JSON WITHOUT ANY ESCAPE CHARACTERS
JsonObject obj = JsonObject.Parse(feed_data); // <-- THROWS AN "INVALID JSON ERROR HERE" AND VALUE OF VARIABLE IN AUTOS SHOWS JSON DATA WITH ESCAPE CHARACTERS AND ADDITIONAL QUOTATION MARKS BEFORE AND AFTER THE STRING
}
private string getFeed()
{
HttpClient client = new HttpClient();
string url = "URL HERE";
HttpResponseMessage response = client.GetAsync(url).Result;
return response.Content.ReadAsStringAsync().Result;
}
那么这里出了什么问题?执行Debug.WriteLine(feed_data);
行时,我在输出控制台中看到了有效的JSON,但仍然得到了解析错误。
编辑:示例JSON(预期和控制台中显示的那个):
[{"id":"884","author":"795","title":"The sum of ages of 5 children born at the intervals of 3 years each is 50 years. What is the age of the youngest child?","details":" ","datetime":"1439099443","answered":"1","vote":"0","answers":[{"id":"884","author":"788","answer":"4 years","datetime":"1439165670","votes":"0"}]}]
vs Autos窗口中的JSON以及解析失败的原因:
"[{\"id\":\"884\",\"author\":\"795\",\"title\":\"The sum of ages of 5 children born at the intervals of 3 years each is 50 years. What is the age of the youngest child?\",\"details\":\" \",\"datetime\":\"1439099443\",\"answered\":\"1\",\"vote\":\"0\",\"answers\":[{\"id\":\"884\",\"author\":\"788\",\"answer\":\"4 years\",\"datetime\":\"1439165670\",\"votes\":\"0\"}]}]"
答案 0 :(得分:1)
您的JSON字符串表示JSON数组而不是JSON对象。使用JSON.NET(我没有在UWP中测试的开发环境)我通过JObject.Parse(feed_data)
得到了同样的错误,可以使用JArray.Parse(feed_data)
修复它。所以,我强烈怀疑在UWP中,等效的解决方案是使用JsonArray.Parse()
:
JsonArray arr = JsonArray.Parse(feed_data);