【问题标题】:ASMX Json begins with ' [ ', not '{'ASMX Json 以'['开头,而不是'{'
【发布时间】:2015-04-16 13:59:01
【问题描述】:

我正在使用 LINQ to SQL 在 C#/ASP.net 中创建一个 WebService Json Parser。

它工作正常,但我的 JSON 以这种方式返回:

<string>[{"cli_id":1,"nome":"Joe"},{"cli_id":2,"nome":"Gary"},{"cli_id":3,"nome":"Ash"},{"cli_id":4,"nome":"Pedro"},{"cli_id":5,"nome":"Marcos"}]</string>

我打算将此 JSON 用于 android 应用程序,但当 json 页面以“​​{”而不是 [.

如何在开头插入 {?

我正在尝试这段代码:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebService : System.Web.Services.WebService {    
    public WebService () {}

    DataClassesDataContext dados = new DataClassesDataContext();

    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    [WebMethod]
    public string getCustomers() {    
        var json = "";    
        var clientes = from result in dados.clientes select result;

        JavaScriptSerializer jss = new JavaScriptSerializer();    
        json = jss.Serialize(clientes);    
        return json;    
    }        
}

【问题讨论】:

  • 它是完全有效的 JSON:它是对象数组,你想如何表示它?以 { 开头,无效。

标签: c# asp.net json web-services javascriptserializer


【解决方案1】:

如何在开头插入 {?

你不想。您想正确使用它:作为对象的 array

您尚未展示使用它的 Android 代码,但该代码应该期望顶层是一个数组,而不是一个对象。

我的意思是,你可以这样做:

return "{\"clientes\": " + json + "}";

...所以您的顶层是一个具有单个属性的对象,clientes,具有客户端数组,但没有理由这样做;您输出的内容是有效的,只需正确使用即可。

【讨论】:

    猜你喜欢
    • 2012-04-12
    • 1970-01-01
    • 2020-06-02
    • 2018-05-27
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    相关资源
    最近更新 更多