0

実行した類似のJSONオブジェクトが2つありますJObject.FromObject()

各オブジェクトには、次のような他のオブジェクトの配列を持つプロパティがあります。

Doc1

{
  "Title": "Alpha",
  "data": [
    {
      "Id": "Fox2",
      "Field": "King6",
      "Value": "Alpha",
      "Description": "Tango"
    }
  ]
}

Doc2

{
  "Title": "Bravo",
  "data": [
    {
      "Id": "Kilo",
      "Field": "Echo",
      "Value": "Romeo",
      "Description": "Jester"
    }
  ]
}

これらのオブジェクトが2つあり、一方から他方にデータフィールドを追加しようとしています。基本的に、一方の「data」プロパティの配列から他方の配列にデータを追加します。

最終結果は次のようになります。

{
  "Title": "Alpha",
  "data": [
    {
      "Id": "Fox2",
      "Field": "King6",
      "Value": "Alpha",
      "Description": "Tango"
    },
    {
      "Id": "Kilo",
      "Field": "Echo",
      "Value": "Romeo",
      "Description": "Jester"
    }
  ]
}

逆シリアル化や文字列の組み合わせなどでねじ込むことなく、これを実行しようとしています。

私はこれのバリエーションを試しました:

var data = JObject.FromObject(doc1);
var editData = JObject.FromObject(doc2);


foreach (var editItem in editData.Property("data").Children())                                
   {
      data.Property("data").Add(editItem.Children());
   }

ただし、次のようなエラーが発生し続けます。

Newtonsoft.Json.Linq.JPropertyは複数の値を持つことはできません

アレイをどのように組み合わせる必要がありますか?

4

1 に答える 1

3

"Title": "Bravo",最終的なオブジェクトに含めてみませんか?

私はそのようにします:

var j1 = (JObject)JsonConvert.DeserializeObject(json1);
var j2 = (JObject)JsonConvert.DeserializeObject(json2);

var jArray = new JArray(j1, j2);
var str = jArray.ToString();

編集

var final = JsonConvert.SerializeObject( 
                new {Title=j1["Title"], data=j1["data"].Union(j2["data"])},
                Newtonsoft.Json.Formatting.Indented);
于 2012-09-20T16:30:26.180 に答える