-1

如何使用 json 返回多个对象

var result1 = new { stores = this.getstoreResults("param") };
var result2 = new { places = this.getplaceResults("param") };

result1 和 result2 是具有不同属性的两个不同对象,如何将它们组合并返回到视图中?

return Json(result1+result2); --How?

另外,我如何在jquery中映射它?

response($.map(data, function (item) {});
4

3 回答 3

4

return Json(new { result1 = result1, result2 = result2 });

在 js 中,您可以将该属性用作var r1 = data.result1;

于 2013-08-15T03:08:15.020 回答
1

实际上,您可以将响应作为对象数组返回,例如:

Json(new [] { response1, response2 }) 

方面,您可以单独转换这些对象数组。

var oCombined = {}
$.each(oJSONArray,function() 
{ 
    oCombined = $.extend(oCombined, this)
});

如果您打算在 C# 端执行“JQuery 扩展”版本,则可以创建一个函数来实现此目的,该函数通过反射来交互对象的所有属性并返回 ExpandoObject 动态类型(仅限 C# 4+)作为组合结果类似于:

function ExpandoObject Extender(object obj1, Type obj1Type, object obj2, Type obj2Type) 
{
    var result = new ExpandoObject() as IDictionary<string, object>;
    //Property Interator obj1
         result.Add(ob1.PropertyName, ..)

    //Property Interator obj2
         result.Add(ob2.PropertyName, ..)

    return result;
}

最后,您的代码将是:

return Json(Extender(result1,result2));
于 2013-08-15T03:24:26.047 回答
1

如果两个 JSON 都是从相同的数据类型生成的,则将两者都添加到 LIST<> 中,然后使用 JSON.NET(JsonConvert.DeserializeObject<T>()方法)转换为 JSON

于 2013-08-15T04:58:11.070 回答