5

あなたの助けが必要です。私はC#を初めて使用するので、助けていただければ幸いです。そこで、jsonファイルを解析してオブジェクトに入れるプログラムを作成しました。私のプログラムは次のようになります。

var path = (@"C:\sim\input7.json");
using (StreamReader reader = File.OpenText(path))
{
   JObject SimData = JObject.Parse(reader.ReadLine());
   Console.WriteLine("Object ID: " + SimData["_id"]);
   Console.WriteLine("ID: " + SimData["id"]);
   Console.WriteLine("Day: " + SimData["day"]);
   Console.WriteLine("Value: " + SimData["value"]);

まず、jsonファイルで1行だけを使用しますが、正常に機能します。今、私は次のような複数の行を持っています:

{ "_id" : "_id1" , "id" : "100", "day" : "5", "value" : "90.38", "time" : "000000" }
{ "_id" : "_id2", "id" : 100, "day" : 5, "value" : 89.79000000000001, "time" : "000100" }

Console.WriteLine();私の質問は、たとえば、それぞれの値を設定したい場合はどうすればよいかということです。

私はいくつかのことを試しましたが、これを解決することはできません。同じ入力ファイルがあります。私は今これを試しました:

using (StreamReader reader = new StreamReader(path))
                 {
                    string line;
                    while ((line = reader.ReadLine()) != null)
                     {
                        list.Add(line);
                        JObject SD = JObject.Parse(line);
                        Console.WriteLine(SD["day"]);
                     }
              }

各行の「値」だけを書きたい!

4

2 に答える 2

0

各 JSON ファイルを個別に解析します。

foreach(DirectoryInfo directoryInfo in new DirectoryInfo(@"C:\sim\").getDirectories());
{
   using (StreamReader reader = File.OpenText(directoryInfo.FullName))
{
   JObject SimData = JObject.Parse(reader.ReadLine());
   Console.WriteLine("Object ID: " + SimData["_id"]);
   Console.WriteLine("ID: " + SimData["id"]);
   Console.WriteLine("Day: " + SimData["day"]);
   Console.WriteLine("Value: " + SimData["value"]);
}
}
于 2012-10-18T14:09:29.377 に答える
0

適切なjsonファイルが必要な場合があります。読みやすく(そしてきれいに)なります:

{ "_id" : "_id1" , "id" : "100", "day" : "5", "value" : "90.38", "time" : "000000" }
{ "_id" : "_id2", "id" : 100, "day" : 5, "value" : 89.79000000000001, "time" : "000100" }

これはjsonではありません

[{ "_id" : "_id1" , "id" : "100", "day" : "5", "value" : "90.38", "time" : "000000" },
{ "_id" : "_id2", "id" : 100, "day" : 5, "value" : 89.79000000000001, "time" : "000100" }]

これはjson配列です。

この json ファイルがあれば、Json.Net解析しているオブジェクトのクラスを作成して、リストとして簡単に読み取ることができます。

public class IdObject
{
    public string _id { get; set; }
    public int id { get; set; }
    public int day { get; set; }
    public int value { get; set; }
    public int time { get; set; }
}

それで :

List<IdObject> list = JsonConvert.DeserializeObject<List<IdObject>>(jsonString);
Console.WriteLine(list[0]._id);

結果: _id1

于 2014-05-30T09:12:40.650 に答える