Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json动态字符串列表_Json_Serialization_Asp.net Mvc 4 - Fatal编程技术网

Json动态字符串列表

Json动态字符串列表,json,serialization,asp.net-mvc-4,Json,Serialization,Asp.net Mvc 4,我想将我的mvc应用程序中的验证错误列表返回到客户端,以便我可以使用接收对象的s 我可以得到一个字段列表,以及以任何最合适的方式应用于这些字段的erorr 我已经尝试了一些格式,包括字典,但没有一种按照验证库的要求序列化到正确的结构 即 我所有的例子似乎都是按照 {"Key": "fieldname", "Value" : "some error for fieldname"} 返回数据的最佳方式是什么?如何以我需要的正确方式将其序列化?我建议您使用(它也是ASP.NET MVC 4的默认JS

我想将我的mvc应用程序中的验证错误列表返回到客户端,以便我可以使用接收对象的s

我可以得到一个字段列表,以及以任何最合适的方式应用于这些字段的erorr

我已经尝试了一些格式,包括字典,但没有一种按照验证库的要求序列化到正确的结构

我所有的例子似乎都是按照

{"Key": "fieldname", "Value" : "some error for fieldname"}
返回数据的最佳方式是什么?如何以我需要的正确方式将其序列化?

我建议您使用(它也是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");
更新

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

var jsonObject = new JObject();
jsonObject.Add("fieldname", "some error for fieldname");
jsonObject.Add("fieldname2", "some error for fieldname2");
...
    return Content(jsonObject.ToString(Newtonsoft.Json.Formatting.None), "application/json");
在这种情况下,创建
ContentResult
如下所示:

var jsonObject = new JObject();
jsonObject.Add("fieldname", "some error for fieldname");
jsonObject.Add("fieldname2", "some error for fieldname2");
...
    return Content(jsonObject.ToString(Newtonsoft.Json.Formatting.None), "application/json");

这看起来很有希望,必须尝试使用json对象返回[[]@DanielPowell你是说
返回json(jsonObject)方法?是的,请看@DanielPowell,直到今天晚些时候我才能重新测试它,此时我只能建议在向JArray添加对象之前catsing to
dynamic
jsonArray.Add(json为dynamic)。请检查,并让我知道这是否有帮助。