带有 JObject 元素 returns 空数组的 C# JsonResult
C# JsonResult with JObject element returns empty array
我正在尝试 return 来自包含 JsonObject 作为元素的 REST API 的 JSON 结果。
var aJsonObject = new JObject();
aJsonObject.Add("somefield", "somevalue" );
aJsonObject.Add("someotherfield", 1995);
return Json( new { status = "success", result = aJsonObject } );
客户端收到一个空的嵌套数组:
{"status":"success","result":[[[]],[[]]]}
我不喜欢的解决方法是序列化 JsonObject,从而将其作为字符串发送,然后让客户端解析它。可以用,就是有点丑
这是一个错误还是我做错了?
注意:2018 年 8 月 3 日,我编辑了变量声明以更正拼写错误 - 它是 jsonObject,应该是 aJsonObject
JObject 已经 json 格式化。 JsonResult 的主要目的是将对象序列化为 json。你想做的是(我猜):
dynamic resultObject = new ExpandoObject();
resultObject.somefield = "somevalue";
resultObject.someotherfield = 1995;
return Json( new { status = "success", result = resultObject } );
如果您想自己构建 Json 字符串并将其 return 发送给客户端,您可以使用 Content:
return new Content(yourjsonstring, "application/json");
如果你想继续使用 JObject,这行得通(然后 return JSON 正如@ozum.e 描述的那样:
var jObject = new JObject();
jObject.Add("someField", "someValue");
jObject.Add("otherField", 1995);
var newObj = new { status = "success", result = jObject };
var returnThis = JsonConvert.SerializeObject(newObj);
我正在尝试 return 来自包含 JsonObject 作为元素的 REST API 的 JSON 结果。
var aJsonObject = new JObject();
aJsonObject.Add("somefield", "somevalue" );
aJsonObject.Add("someotherfield", 1995);
return Json( new { status = "success", result = aJsonObject } );
客户端收到一个空的嵌套数组:
{"status":"success","result":[[[]],[[]]]}
我不喜欢的解决方法是序列化 JsonObject,从而将其作为字符串发送,然后让客户端解析它。可以用,就是有点丑
这是一个错误还是我做错了?
注意:2018 年 8 月 3 日,我编辑了变量声明以更正拼写错误 - 它是 jsonObject,应该是 aJsonObject
JObject 已经 json 格式化。 JsonResult 的主要目的是将对象序列化为 json。你想做的是(我猜):
dynamic resultObject = new ExpandoObject();
resultObject.somefield = "somevalue";
resultObject.someotherfield = 1995;
return Json( new { status = "success", result = resultObject } );
如果您想自己构建 Json 字符串并将其 return 发送给客户端,您可以使用 Content:
return new Content(yourjsonstring, "application/json");
如果你想继续使用 JObject,这行得通(然后 return JSON 正如@ozum.e 描述的那样:
var jObject = new JObject();
jObject.Add("someField", "someValue");
jObject.Add("otherField", 1995);
var newObj = new { status = "success", result = jObject };
var returnThis = JsonConvert.SerializeObject(newObj);