gpt4 book ai didi

c# - 如何忽略 asmx 的 JSON 响应中的空值

转载 作者:行者123 更新时间:2023-12-01 07:58:43 25 4
gpt4 key购买 nike

我有一个简单的 asmx 返回 JSON:

    [WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class myWebService: System.Web.Services.WebService
{

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public MyCustomClassObject GetTestData()
{
MyCustomClassObject x = new MyCustomClassObject();
x.PropertyA = "1";
x.PropertyC = "1";
return x;
}

C# 类定义:

 public class MyCustomClassObject 
{
public string PropertyA { get; set; }
public string PropertyB { get; set; }
public string PropertyC { get; set; }
public object PropertyD { get; set; }
}

使用 jquery $.ajax 调用:

 var jqxhr = $.ajax(
{
type: 'POST',
contentType: "application/json; charset=utf-8",
url: "/WebServices/myWebService.asmx/GetTestData",
data: parameters,
dataType: "json",
success: successLoadingData,
error: errorLoadingData,
complete: function () { $("#LoadingImage").hide(); }
});

我的 JSON 响应(包含不需要的空值):

{"PropertyA":"1","PropertyB":null,"PropertyC":"1","PropertyD":null}

问题:如何使用尽可能多的现有内容仅获取 JSON 中的非 null 属性?

我在这里看到了一些答案,人们返回 JSON 对象和使用 JSON 属性定义的属性,但我只是返回我的对象​​,而 Web 服务正在为我将其转换为 JSON(由于 Response.Format 属性) 。如果有必要,我会改变我的方法,但这是我的第一个 JSON 项目,所以希望保持简单。谢谢。

最佳答案

继续评论部分。即使你调用一个函数来删除空值,我个人的看法是它的设计很糟糕,有一个字典和序列化是一种比删除我们不想要的属性更优雅的方法。完成。

我会做这样的事情:

public class MyCustomClassObject 
{
public Dictionary<string, object> Foo { get; set; }

public MyCustomClassObject()
{
this.Foo = new Dictionary<string, object>();
}

}

public MyCustomClassObject GetTestData()
{
MyCustomClassObject x = new MyCustomClassObject();
x.Foo.Add("PropertyA", 2);
x.Foo.Add("PropertyC", "3");
return x.Foo;
}

这为您提供了一个更通用的对象来使用,并且更好地遵循 JSON 格式,因为理论上您可以将对象列表或数组作为值,这也更适合使用,因为您可以在此处添加 PropertyD .

为什么您需要在添加值后删除它们?

关于c# - 如何忽略 asmx 的 JSON 响应中的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21517322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com