【发布时间】:2013-06-11 12:13:10
【问题描述】:
我正在尝试将一个多维的 JSON 字符串解析到应用程序中。这是字符串的片段:
{"one": {"Title": "There Goes the Musical Neighborhood", "Body": "On April 18th Public Enemy..."},"two": {"Title": "Public Enemys DJ Lord Tours Australia”、“Body”:“公敌......
因此,您希望看到我有一个键(“one”),其值设置为第二个 JSON 字符串,键以“title”和“body”开头,每个键都有自己的字符串值。
我用来输出字符串的 Web 服务可以在单个键值对中正常解析 (EX. {"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 的令牌无效”。这可能与我如何转义字符串括号有关,但它在在线解析器中运行良好。该站点是我的完整字符串所在的位置,因此您可以查看。知道出了什么问题,或者是否有更好的方法来解决这个问题?
【问题讨论】:
标签: c# android json multidimensional-array