1

我想使用 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。

4

1 回答 1

5

获取具有数组和路径的单个 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);
于 2012-12-30T07:18:28.913 回答