5

I am trying to create JSON with the following code:

JArray jInner = new JArray("document");
JProperty jTitle = new JProperty("title", category);
JProperty jDescription = new JProperty("description", "this is the description");
JProperty jContent = new JProperty("content", content);
jInner.Add(jTitle);
jInner.Add(jDescription);
jInner.Add(jContent);

when I get to the jInner.Add(jTitle), I get the following exception:

System.ArgumentException: Can not add Newtonsoft.Json.Linq.JProperty to Newtonsoft.Json.Linq.JArray.
   at Newtonsoft.Json.Linq.JContainer.ValidateToken(JToken o, JToken existing)
   at Newtonsoft.Json.Linq.JContainer.InsertItem(Int32 index, JToken item, Boolean skipParentCheck)
   at Newtonsoft.Json.Linq.JContainer.AddInternal(Int32 index, Object content, Boolean skipParentCheck)

Can anybody help and tell me what am I doing wrong?

1
  • If my answer isn't what you're looking for, please give an example of the JSON you're trying to produce. Commented Mar 20, 2015 at 14:26

1 Answer 1

11

It doesn't make sense to add a property to an array. An array consists of values, not key/value pairs.

If you want something like this:

[ {
  "title": "foo",
  "description": "bar"
} ]

then you just need an intermediate JObject:

JArray jInner = new JArray();
JObject container = new JObject();
JProperty jTitle = new JProperty("title", category);
JProperty jDescription = new JProperty("description", "this is the description");
JProperty jContent = new JProperty("content", content);
container.Add(jTitle);
container.Add(jDescription);
container.Add(jContent);
jInner.Add(container);

Note that I've removed the "document" argument from the JArray constructor call too. It's not clear why you had it, but I strongly suspect you don't want it. (It would have made the first element of the array the string "document", which would be fairly odd.)

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.