jquery - 如何使用 C# 字符串生成器创建简单的 JSON 对象

标签 jquery asp.net json

我是 JSON 新手,想要使用 StringBuilder 创建简单的 JSON 对象,该对象将通过 jQuery Ajax 调用进行查询。

[WebMethod]
public static string GetmyJSON()
{
    StringBuilder sb = new StringBuilder();       
    sb.Append("{firstname: \"Manas\",").Append("lastname : \"Tunga\"").Append("}");
    return sb.ToString();    

}

在我的客户端代码中,我有:

.ajax({

        type: "POST",
        url: "simplePage.aspx/GetmyJSON",           
        data: "{}",
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',

        success: function (data) {

            alert(data.d.firstname);             


        } // end of sucess

    }); // End of ajax

但我的警报消息显示“未定义”而不是“Manas”。 是否可以使用 StringBuilder 返回 JSON 对象?

最佳答案

永远不要这样做。 从不手动构建 JSON。 始终使用 JSON 序列化程序。或者在您的情况下,您甚至不需要这样做,因为 ASP.NET webmethod 运行时会处理。您所要做的就是专注于您的业务需求,而不必担心管道问题。

例如,首先定义一个代表您的数据的模型:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

然后让您的 Web 方法返回此模型,将所有序列化问题留给框架:

[WebMethod]
public static Person GetPerson()
{
    Person p = new Person();
    p.FirstName = "Manas";
    p.LastName = "Tunga";
    return p;
}

现在只需从客户端使用此方法:

$.ajax({
    type: 'POST',
    url: 'simplePage.aspx/GetPerson',
    data: '{ }',
    contentType: 'application/json; charset=utf-8',
    success: function (data) {
        alert(data.d.FirstName);
        alert(data.d.LastName);
    }
});

无需担心 JSON、字符串生成器......

如果需要,您还可以将复杂的参数传递给您的 Web 方法:

public class Foo
{
    public string Bar { get; set; }
}

然后:

[WebMethod]
public static Person GetPerson(Foo foo)
{
    ...
}

最后:

$.ajax({
    type: 'POST',
    url: 'simplePage.aspx/GetPerson',
    data: JSON.stringify({ foo: { bar: 'baz' } }),
    contentType: 'application/json; charset=utf-8',
    success: function (data) {
        alert(data.d.FirstName);
        alert(data.d.LastName);
    }
});

此处显示的 JSON.stringify 方法原生内置于现代浏览器中。如果您需要支持旧版浏览器,您可以包含 json2.js将脚本添加到您的页面。

关于jquery - 如何使用 C# 字符串生成器创建简单的 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10533374/

相关文章:

jquery - 在 div 内滚动也会在到达结束后滚动它后面的内容(移动 HTML)

javascript - 改变元素高度的CSS动画

php - CakePHP 链接插件下拉列表未链接

asp.net - Google 关于推送通知的回应

php - 从 php 返回的 JSON 是 [object Object] 并且 jQuery.parseJSON 是 null

javascript - 如何在单击 Hyperlink1 打开的同一窗口中打开超链接 (2)

javascript - 将用户输入的确切日期从 Javascript 传递到 .NET

c# - 在 ASP.NET MVC 4 中设置外键

json - 如何通过 Swift 和 Rest API 之间的连接获取和发布 JSON?

json - vuejs 应用程序中无法检测到的内存泄漏