在C#中读取和parsingJson文件

我已经花费了两天的时间,用代码示例等等的方法来尝试读取一个非常大的JSON文件到C#中的数组中,所以我可以稍后将其分成2维数组进行处理。

我遇到的问题是我找不到任何人在做我正在做的事情的例子。 这意味着我只是编辑代码有点希望最好的。

我已经设法得到一些工作,将会:

  • 读取文件错过标题,只读取数组中的值。
  • 在数组的每一行放置一定数量的值。 (所以我可以稍后分成一个放入二维数组)

这是用下面的代码完成的,但是在数组中input几行后,程序崩溃了。 这可能与文件大小有关。

// If the file extension was a jave file the following // load method will be use else it will move on to the // next else if statement if (fileExtension == ".json") { int count = 0; int count2 = 0; int inOrOut = 0; int nRecords=1; JsonTextReader reader = new JsonTextReader(new StreamReader(txtLoaction.Text)); string[] rawData = new string[5]; while (reader.Read()) { if (reader.Value != null) if (inOrOut == 1) { if (count == 6) { nRecords++; Array.Resize(ref rawData, nRecords); //textBox1.Text += "\r\n"; count = 0; } rawData[count2] += reader.Value + ","; //+"\r\n" inOrOut = 0; count++; if (count2 == 500) { MessageBox.Show(rawData[499]); } } else { inOrOut = 1; } } } 

我正在使用的JSON片段是:

 [ { "millis": "1000", "stamp": "1273010254", "datetime": "2010/5/4 21:57:34", "light": "333", "temp": "78.32", "vcc": "3.54" }, ] 

我需要这个JSON的值。 例如,我需要“3.54”,但我不希望它打印“vcc”。

我希望有人能告诉我如何读取一个JSON文件,并只提取我需要的数据,并将其放入一个数组或稍后可以放入数组中。

如何使所有的事情更容易?

 public void LoadJson() { using (StreamReader r = new StreamReader("file.json")) { string json = r.ReadToEnd(); List<Item> items = JsonConvert.DeserializeObject<List<Item>>(json); } } public class Item { public int millis; public string stamp; public DateTime datetime; public string light; public float temp; public float vcc; } 

你甚至可以在没有声明Item类的情况下获得dynamic盟友值。

 dynamic array = JsonConvert.DeserializeObject(json); foreach(var item in array) { Console.WriteLine("{0} {1}", item.temp, item.vcc); } 

这样做是一个可怕的想法。 使用Json.NET 。 它已经解决了这个问题,比起大多数程序员可以解决的问题要好几个月才能完成。 至于你的具体需求,parsing成数组等,请检查文档 ,特别是在JsonTextReader 。 基本上,Json.NET原生处理JSON数组,并将它们parsing为string,整数或任何types碰巧没有你的提示。 这里是读者和作者的基本代码使用的直接链接,所以你可以在一个空余的窗口打开,而你正在学习使用这个。

这是最好的:这次是懒惰,并使用一个库,所以你永远解决这个共同的问题