我正在尝试从包含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,从而将其作为字符串发送,然后让客户端对其进行解析。可以,但是有点难看。
这是错误还是我做错了?
注意:18/3/18我编辑了变量声明以纠正输入错误-它是jsonObject,应该是aJsonObject
答案 0 :(得分:4)
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");
答案 1 :(得分:2)
如果您想继续使用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);