1

我有一个带有以下格式 Json 的文件

{
  "Id": 0,
  "MsgId": 125,
  "ExceptionDetails": "whatever2"
}


{
  "Id": 1,
  "MsgId": 135,
  "ExceptionDetails": "whatever2"
}

这正是没有括号的文件中的样子

我需要解析这个文本文件并获取这些键的值,例如在这个例子中我需要获取 0 和 1

var json = System.IO.File.ReadAllText(@"C:\development\commonArea\test3.txt");

var objects = JArray.Parse(json); // parse as array

foreach (JObject root in objects)
{
    foreach (KeyValuePair<String, JToken> app in root)
    {
        if (app.Key == "Id")
        {
            var appName2 = app.Key;
            Console.WriteLine(I HAVE NO IDEA);
        }
    }

}

谢谢

4

2 回答 2

1
var objects = JArray.Parse(json); // parse as array  

foreach (JObject jobject in objects)
{
    Console.WriteLine(jobject.Value<int>("Id"));
}

印刷:

0
1

您提供了无效的 JSON。我对其进行了修改,使其成为有效的 JSON 数组:

[
    { "Id": 0, "MsgId": 125, "ExceptionDetails": "whatever2" },
    { "Id": 1, "MsgId": 135, "ExceptionDetails": "whatever2" }
]
于 2013-06-03T21:28:37.600 回答
0

创建一个匹配的类,然后使用反序列化器。这是使用System.Web.Script.Serialization命名空间。

public class Item
{
    public int Id { get; set; }
    public int MsgId { get; set; }
    public string ExceptionDetails { get; set; }
}

public class RootObject
{
    public List<Item> Items { get; set; }
    public RootObject DeserializeClass()
    {
         JavaScriptSerializer serializer = new JavaScriptSerializer();
         RootObject obj = serializer.Deserialize<RootObject >(JSONSTRING);
         return obj;
     }
}
于 2013-06-03T21:27:28.610 回答