简体   繁体   中英

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"}}

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.

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.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM