动态添加到JArray会生成重复数据

时间:2019-06-26 17:09:11

标签: c# json

当我编写此代码时:

   string[] title= {"title1","title2","title3","title4"};
   int[] iid= {124,122,333,234};

   dynamic bucket = new JObject();
   bucket.bucket = "Parking Lot";
   bucket.roadmap = new JArray();

   dynamic issue = new JObject();
   dynamic json2 = new JArray(bucket);

   for(int i=0; i<title.Length; i++) {
        issue.title = title[i];
        issue.iid = iid[i];
        issue.order = i;
        bucket.roadmap.Add(issue);
   }

   Console.WriteLine(json2.ToString());

我的结果是:

   [
     {
       "bucket": "Parking Lot",
       "roadmap": [
         {
           "title": "title4",
           "iid": 234,
           "order": 3
         },
         {
           "title": "title2",
           "iid": 122,
           "order": 1
         },
         {
           "title": "title3",
           "iid": 333,
           "order": 2
         },
         {
           "title": "title4",
           "iid": 234,
           "order": 3
         }
       ]
     }
   ]

第一个和最后一个“路线图” JObjects被重复。有没有一种方法可以动态生成带有我要传递的唯一值的JSON?

我也尝试非动态地做。

    JArray bucket = new JObject();
    bucket.Add("bucket","Parking Lot");
    bucket.Add("order", new JArray());

    JObject issue = new JObject();
    ...

但是我找不到选择“ bucket.order.Add”向该JArray添加问题的方法。

最后,我只是想遍历带有大量数据的JArray,我想将其与存储桶类型分离,提取每个问题值并将其存储在新的JSON中,结构如下所示。

谢谢

1 个答案:

答案 0 :(得分:1)

在添加到数组之前创建一个新的问题对象。

   for(int i=0; i<5; i++) {
        issue = new JObject();
        issue.title = "Elbow\"";
        issue.iid = 123;
        issue.order = i;
        bucket.roadmap.Add(issue);
   }