Json动态字符串列表

时间:2012-11-22 11:57:44

标签: json serialization asp.net-mvc-4

我想从我的mvc应用程序返回验证错误列表到客户端,我可以使用带有对象的jquery validation showError

我可以以最适合的方式获得适用于它们的字段列表和erorr。

我已经尝试了几种格式,字典,并没有按照验证库的要求将这些格式化为正确的结构。

即。

{"fieldname":"some error for fieldname", "fieldname2": "some error for fieldname2"}

我的所有例子似乎都按照

的顺序排列
{"Key": "fieldname", "Value" : "some error for fieldname"}

返回数据的最佳方式是什么?如何以正确的方式对其进行序列化?

1 个答案:

答案 0 :(得分:1)

我建议您使用Json.NET(它也是ASP.NET MVC 4的默认JSON序列化程序)及其JsonWriter

StringWriter errorsStringWriter = new StringWriter();
JsonWriter errorsJsonWriter = new JsonWriter(jsonStringWriter);
errorsJsonWriter.WriteStartObject();
errorsJsonWriter.WritePropertyName("fieldname"); 
errorsJsonWriter.WriteValue("some error for fieldname");
errorsJsonWriter.WritePropertyName("fieldname2"); 
errorsJsonWriter.WriteValue("some error for fieldname2");
...
errorsJsonWriter.WriteEndObject();
errorsJsonWriter.Flush();

您可以使用ContentResult

返回以这种方式生成的JSON
return Content(errorsStringWriter.GetStringBuilder().ToString(), "application/json");

<强>更新

Json.NET还通过JObject支持动态JSON。在这种情况下,您的代码可能如下所示:

var jsonObject = new JObject();
jsonObject.Add("fieldname", "some error for fieldname");
jsonObject.Add("fieldname2", "some error for fieldname2");
...

在这种情况下创建ContentResult可能如下所示:

    return Content(jsonObject.ToString(Newtonsoft.Json.Formatting.None), "application/json");