Diogo Cardoso
Diogo Cardoso

Reputation: 22257

Serialize an array into JSON objects using .NET

The serialization of the array returns the following JSON:

[{"Code":"AAAA","Description":"Description of AAAA"},{"Code":"BBBB","Description":"Description of BBBB"}]

My goal is to return the following JSON:

{"AAAA":{"Description":"Description of AAAA"},"BBBB":{"Description":"Description of BBBB"}}

Upvotes: 1

Views: 9700

Answers (3)

Jason Kleban
Jason Kleban

Reputation: 20758

The table on this blog post shows several search starting points.

.Net has built-in System.Web.Script.Serialization.JavaScriptSerializer, here, with examples

The .Net one doesn't specially serialize Dictionary the way you want, but some of the others do, I believe. However, I think there are reasons NOT to want a general serialization routine the way you've requested - though I can't list them certainly.

Upvotes: 0

Daniel Schaffer
Daniel Schaffer

Reputation: 57822

You'll need to either use a class that has the "AAAA" and "BBBB" properties, or you'll need to serialize a dictionary instead. As it is, you're serializing an array and getting an array.

Upvotes: 1

Pablo Santa Cruz
Pablo Santa Cruz

Reputation: 181270

You can achieve something simliar (not exactly the same you are expecting) if instead of serializing an array, build a temporary Dictionary and serialize it.

var dict = new Dictionary<String, YourClass>();
foreach (YourClass yourObj in listOfObjs)
{
    dict[yourObj.Code] = yourObj;
}
// then serialize "dict"

You could add a rule to your JSON serializer to make it avoid serializing "code" property in YourClass, and you will end up with a JSON object exactly as you show in your example.

Upvotes: 3

Related Questions