web-dev-qa-db-fra.com

Comment ajouter un objet Jarray dans JObject

Comment ajouter JArray dans JObject? Je reçois une exception lors du changement de jarrayObj en JObject.

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))

J'ai besoin d'une sortie sous cette forme:

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

Je vois deux problèmes avec votre code lorsque vous l'avez publié.

  1. parameterNames doit être un tableau de chaînes, pas seulement une chaîne unique avec des virgules.
  2. Vous ne pouvez pas ajouter un JArray directement à un JObject; vous devez le mettre dans un JProperty et ajouter que au JObject, tout comme vous le faites avec les propriétés "birthday" et "email".

Code corrigé:

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());

Production:

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

De plus, pour référence future, si vous obtenez une exception dans votre code, il est utile de dire dans votre question quelle est exactement l'exception, afin que nous n'ayons pas à deviner. Cela nous permet de vous aider plus facilement.

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