从控制器返回动态 json对象 ASP.NET
本文关键字:对象 ASP NET json 动态 控制器 返回 | 更新日期: 2023-09-27 18:32:27
我正在尝试返回一个从 json 字符串反序列化的动态对象。在运行时,我不知道对象是什么样子的,所以我无法键入它。
我试过这个:
var json = @"[{""clientNumber"":""3052394"",""accountStatus"":""Active""},{""clientNumber"":""1700630"",""accountStatus"":""Active""}]";
dynamic result = JsonConvert.DeserializeObject(json);
return Json(result, JsonRequestBehavior.AllowGet);
但结果是这样的:
[[[[]],[[]]],[[[]],[[]]]]
我知道我可以这样做:
var result = new{...};
但是这不起作用,因为我不知道对象在运行时是什么样子的。
因此,MVC 控制器中的标准 Controller.Json
方法与动态类型配合得很奇怪。
进行反序列化一样,最好也使用 JSON.NET 进行序列化并返回字符串输出。
return Content(JsonConvert.SerializeObject(dynamicInstance), "application/json");
Dictionary<string,string>
呢?
var j = new Dictionary<string,string>();
j.Add("clientNumber","3052394");
j.Add("accountStatus","Active");
return Json(j, JsonRequestBehavior.AllowGet);
这是因为JsonConvert.DeserializeObject(json)
返回JArray
实例。
而且(我不知道为什么)在return Json()
ApiController
中没有正确序列化
我的情况只有助于定义静态类型并在返回之前序列化到它
这不是
一个有效的JSON,因为你必须在JSONString中做很多"
。我不知道这是否能解决你的问题,但试试这个:
var json = @"[{'"clientNumber'":'"3052394'",'"accountStatus'":'"Active'"},{'"clientNumber'":'"1700630'",'"accountStatus'":'"Active'"}]";