在同一个响应中返回多个JSON对象并对其进行解析 - c#

我有以下代码:(为简化可读性)

C#

        foreach(DataRow dRow in myDS.Tables[0].Rows){
            Company myCompany = new Company();
            myCompany.id = int.Parse(dRow["id"].ToString());
            Companies.Add(myCompany);
        }

        JavaScriptSerializer serializer = new JavaScriptSerializer();
        Response.Write(serializer.Serialize(Companies));
        Response.End();

jQuery的

$.getJSON('ajax.aspx?what=' + $('input[name="what"]').val() + '&where=' + $('input[name="what"]').val(), function (data) {
    $.each(data, function (key, val) {
        var myCompany = new function () {
            this.id = val.id;
        }
        Companies.push(myCompany);
    });
});

现在,我在C#代码中有另一个对象,名为Cities
我想在同一请求中将其返回。

就像是

Response.Write(serializer.Serialize(Companies));
Response.Write(serializer.Serialize(Cities));
Response.End()

并在客户端将其解析。

我该怎么做?

参考方案

您可以将两个属性包装到一个匿名对象中:

var result = new { Cities = Cities, Companies = Companies };
Response.Write(serializer.Serialize(result);
Response.End();

或者,如果您使用的某些旧的.NET版本不支持匿名对象,则可以定义包装器类:

public class Wrapper
{
    public IEnumerable<Cities> Cities { get; set; }
    public IEnumerable<Company> Companies { get; set; }
}

然后:

Wrapper result = new Wrapper();
wrapper.Cities = Cities;
wrapper.Companies = Companies;
Response.Write(serializer.Serialize(wrapper);
Response.End();

还要修复AJAX调用,因为您没有正确地对参数进行url编码:

var data = { 
    what: $('input[name="what"]').val(), 
    where: $('input[name="what"]').val() 
};
$.getJSON('ajax.aspx', data, function (data) {
    $.each(data.Companies, function (index, val) {
        var myCompany = new function () {
            this.id = val.id;
        }
        Companies.push(myCompany);
    });
});

如何在没有for循环的情况下在Javascript中使用Django模板标签 - javascript

我想在JavaScript中使用模板变量:我的问题是在javascript代码中使用for循环,for循环之间的所有事情都会重复..但我不想要....下面粘贴了我的代码..有人可以告诉我更好的方法吗这..因为这看起来很丑..这是我的代码: {% block extra_javascript %} <script src="/static/js…

JSON PATH字段NULL检查表达式 - java

我有一个像bellow的json数组:{ "store": { "book": [ { "category": "reference", "author": "Nigel Rees", "title": "Sa…

将字符串分配给numpy.zeros数组[重复] - python

This question already has answers here: Weird behaviour initializing a numpy array of string data                                                                    (4个答案)         …

Mongo抛出“元素名称'名称'无效”异常 - c#

我正在更新一个简单的字段。var filterDocument = new BsonDocument { { "name", "alice" } }; var newDocument = new BsonDocument { { "name", "Alice" } }; coll…

JSON.parse需要转义哪些字符 - javascript

                        我注意到您无法在JSON中保存1B(转义)以保存JSON.parse函数,您将得到SyntaxError: Unexpected token(在Google chrome中),需要将其写为unicde \u001b。我在Python中编写了json_serialize函数,我还需要转义字符串中的其他哪些字符?这…