带有JObject元素的C#JsonResult返回空数组



我试图从包含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字符串并将其返回给客户端,你可以使用Content:

return new Content(yourjsonstring, "application/json");

如果你想继续使用JObject,这是可行的(然后返回@ozum.e描述的JSON(:

var jObject = new JObject();
jObject.Add("someField", "someValue");
jObject.Add("otherField", 1995);
var newObj = new { status = "success", result = jObject };
var returnThis = JsonConvert.SerializeObject(newObj);