2012-11-26 49 views
2

我试图返回一个动态的JSON数组到客户端在MVC。mvc返回JsonArray作为JSON

到目前为止,我有

  var a = 1; 
      var b = 10; 
      var jsonArray = new JArray(); 

      for (var i = 1; i < 5; i++) 
      { 
       var json = new JObject(); 
       json.Add("field" + a, b); 

       jsonArray.Add(json); 
       a++; 
       b++; 
      } 

      return Json(jsonArray); 

这个返回给客户端

[[[[]]]] 

我已经试过先转换JsonArray为字符串,并将其设置为没有格式化,但不根据fiddler返回有效的json。

我希望得到的结果进行soemething,如:

[{field1:10},{field2:11},{field3:12}] 

任何人都可以指出我在做什么错

回答

2

这通过鼓起提琴手:

return Json(new { JsonArray = jsonArray.ToString() }); 

提琴手似乎需要形式{ "FieldName": value }的JSON对象,因此我创建了一个匿名对象。您可以使用任何名称代替JsonArray

简单地返回Json(jsonArray)不会工作,因为jsonArray将具有与您期望的输出不相似的基础表示,因此您在序列化时看到的输出。

+0

这使我的回答充满\ r \ n个字符。我需要返回没有他们的结果。 – bcr

+0

@bcr如果你的action方法的返回类型是'object',并且你返回JArray,mvc会序列化jarray(它不会是它包含的json)。如果你的动作返回的是由nick_w回答的JsonResult,那么tostring将意味着整个jarray只是一个转义字符串。你需要使用contentResult和contentType'application/json',jarray.ToString()作为内容值 – Cargowire

+0

对于api控制器的HttpResponseMessage – Cargowire