web-dev-qa-db-ja.com

jarrayオブジェクトをJObjectに追加する方法

JArrayJObjectに追加する方法は? jarrayObjJObjectに変更すると例外が発生します。

parameterNames = "Test1,Test2,Test3";

JArray jarrayObj = new JArray();

foreach (string parameterName in parameterNames)
{
    jarrayObj.Add(parameterName);
}

JObject ObjDelParams = new JObject();
ObjDelParams["_delete"] = jarrayObj;

JObject UpdateAccProfile = new JObject(
                               ObjDelParams,
                               new JProperty("birthday", txtBday),
                               new JProperty("email", txtemail))

この形式の出力が必要です:

{
    "_delete": ["Test1","Test2","Test3"],
    "birthday":"2011-05-06",          
    "email":"[email protected]" 
}
20
user2882431

投稿したコードには2つの問題があります。

  1. parameterNamesは、カンマを含む単一の文字列ではなく、文字列の配列である必要があります。
  2. JArrayJObjectに直接追加することはできません。それをJPropertyに入れて、thatJObjectに追加する必要があります。これは、 "birthday"および "email"プロパティで行うのと同じです。

修正されたコード:

string[] parameterNames = new string[] { "Test1", "Test2", "Test3" };

JArray jarrayObj = new JArray();

foreach (string parameterName in parameterNames)
{
    jarrayObj.Add(parameterName);
}

string txtBday = "2011-05-06";
string txtemail = "[email protected]";

JObject UpdateAccProfile = new JObject(
                               new JProperty("_delete", jarrayObj),
                               new JProperty("birthday", txtBday),
                               new JProperty("email", txtemail));

Console.WriteLine(UpdateAccProfile.ToString());

出力:

{
  "_delete": [
    "Test1",
    "Test2",
    "Test3"
  ],
  "birthday": "2011-05-06",
  "email": "[email protected]"
}

また、今後の参考のために、コードで例外が発生している場合は、質問で例外が何であるかを正確に伝えると役立つため、推測する必要はありません。それは私たちがあなたを助けることをより簡単にします。

28
Brian Rogers
var jObject = new JObject();
jObject.Add("birthday", "2011-05-06");
jObject.Add("email", "[email protected]");
var items = new [] { "Item1", "Item2", "Item3" };
var jSonArray = JsonConvert.SerializeObject(items);
var jArray = JArray.Parse(jSonArray);
jObject.Add("_delete", jArray);
0
user11578208