簡體   English   中英

JavaScriptSerializer:將列表和字符串序列化為JSON

[英]JavaScriptSerializer: Serialize a list + a string into JSON

我想使用JavaScriptSerializer發送JSON數據包,該數據包既包含對象列表又包含字符串,如ChatLogPath這樣標識。 據我所知,該類只能序列化一個對象(即列表),並且如果我嘗試追加多個對象,則它顯然只會創建無效的JSON,例如{...} {...},而不會工作。

有什么辦法嗎? 我是C#和ASP.NET MVC的新手,如果這是一個愚蠢的問題,請原諒我:)

編輯:這是我現在的代碼。

    string chatLogPath = "path_to_a_text_file.txt";
    IEnumerable<ChatMessage> q = ...
    ...
    JavaScriptSerializer json = new JavaScriptSerializer();
    return json.Serialize(q) + json.Serialize(chatLogPath);

它將在JSON {...}中輸出像這樣的數組,后跟chatLogPath {...}。 換句話說,它無效,因為那是無效的JSON。

將單個JSON對象與數組和路徑放在一起的最簡單方法是創建一個類或動態對象,並將每個對象作為其屬性/字段。

類的例子:

public class ChatInformation {
  public IEnumerable<ChatMessage> messages;
  public string chatLogPath;
}
...
var output = new ChatInformation {
  messages = ...,
  chatLogPath = "path_to_a_text_file.txt"
};
return json.Serialize(output);

動態示例(需要.NET 4+):

dynamic output = new ExpandoObject {
  messages = ...,
  chatLogPath = "path_to_a_text_file.txt"
};
return json.Serialize(output);

匿名類型示例(如果您不希望擁有另一個類,也不在.NET 4上):

var output = new {
  messages = ...,
  chatLogPath = "path_to_a_text_file.txt"
};
return json.Serialize(output);

暫無
暫無

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

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