我正在尝试将一个多维的 JSON 字符串解析到应用程序中。这是字符串的片段:
{"one": {"Title": "There Goes the Musical Neighborhood", "Body": "On April 18th Public Enemy..."},"two": {"Title": "Public Enemys DJ Lord Tours Australia ”,“身体”:“公敌......
因此,正如您希望看到的那样,我有一个键(“one”),其值设置为第二个 JSON 字符串,键从“title”和“body”开始,每个都有自己的字符串值。
我用来输出字符串的 Web 服务可以在单个键值对中正常解析(例如 {"Title": "There Goes the Musical Neighborhood", "Body": "On April 18th Public Enemy..."}将解析字符串并将其存储到我创建的类中,因为我使用的是 Json.Net 并且能够简单地将键与类成员配对。
现在我需要将最多(但不一定全部)五个字符串解析到我的应用程序中以输出给用户。
我首先尝试解析第一个数组中的每个值(EX. {"one": {"Title": ...) 以便它存储的字符串将是一个我可以解析成它自己的对象的 JSON 字符串,但是当我运行我的代码时,它似乎返回了一个带有意外标记“one”的错误。
这是我解析它的方式。
var request = HttpWebRequest.Create(string.Format(@"http://moon.eastlink.com/~jandrews/webservice2.php"));
request.ContentType = "application/json";
request.Method = "GET";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
if (response.StatusCode != HttpStatusCode.OK)
Console.Out.WriteLine("Error fetching data. Server returned status code: {0}", response.StatusCode);
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
var content = reader.ReadToEnd();
if(string.IsNullOrWhiteSpace(content)) {
Console.Out.WriteLine("Response contained empty body...");
}
else {
Console.Out.WriteLine("Response Body: \r\n {0}", content);
NewsArray news = JsonConvert.DeserializeObject<NewsArray>(content);
在反序列化对象之前,我的响应是整个字符串都很好,并一次性输出到控制台,所以我知道流阅读器正在抓取字符串。但是,一旦它尝试反序列化对象,我就会收到错误“第 1 行位置 9 的令牌无效”。这可能与我如何转义字符串括号有关,但它在在线解析器中运行良好。该站点是我的完整字符串所在的位置,因此您可以查看。知道出了什么问题,或者是否有更好的方法来解决这个问题?