簡體   English   中英

將對象數組作為一個對象序列化,並在C#中使用JSON序列化程序為每個對象指定一個命名屬性

[英]Serialize array of objects as one object with a named property for each object in C# with JSON serializer

我有一個List,當序列化為JSON時,會給我一個對象數組。 但是,我需要將序列化版本的結構如下:

{
  "item3":{
    "id":3,
    "name":"monkey"
  },
  "item4":{
    "id":4,
    "name":"turtle"
  }
}

目前,JSON序列化的結構如下:

[
  {
    "id":3,
    "name":"monkey"
  },
  {
    "id":4,
    "name":"turtle"
  }
]

我的目標是能夠按項ID而不是數字索引引用數組(即.arr [“item3”]。name而不是arr [0] .name)。

您可能只是將數據放入字典就足以讓JaveScripySerializer:

var dict = list.ToDictionary(
    item => "item" + item.id);

(並序列化字典)

如果不:

我沒有一個PC方便的例子,但你應該能夠:

  • 編寫一個封裝列表/數組的包裝類
  • 使用JavaScriptSerializer類
  • 創建序列化程序后,將包裝類型與自定義序列化程序相關聯
  • 在自定義序列化程序中,迭代數據,向每個項目的字典添加一個鍵,即data.Add(“item”+ i,list [i]);

您通過RegisterConverters關聯自定義地圖: http//msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.registerconverters.aspx

請注意,除非您需要,否則不需要編寫反序列化。

如果您遇到困難,我會稍后嘗試舉例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM