C# 我在JsonArray webapi c中得到了空值#
我没有得到应有的答复C# 我在JsonArray webapi c中得到了空值#,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,我没有得到应有的答复 { "json_array": [ { "param1": null, "param2": null, "param3": null, "param4": null }, { "param1": null, "param2": null, "p
{
"json_array":
[
{
"param1": null,
"param2": null,
"param3": null,
"param4": null
},
{
"param1": null,
"param2": null,
"param3": null,
"param4": null
}
],
"status": "true"
}
如果类中的所有值都为null,我需要这种类型的响应
和如果不为空,则传递这种类型的响应
{
"json_array":
[
{
"param1": "123",
"param2": "true",
"param3": "success",
"param4": "1"
},
{
"param1": "129",
"param2": "true",
"param3": "success",
"param4": "2"
}
],
"status": "true" }
我返回类的对象,然后像这样在for循环中传递
public async Task<IHttpActionResult> MethodCheckin(RequestClass CR)
{
RequestClass[] ICOARPOST = CR.postobject;
MyClass[] responcearrayPost = new MyClass[ICOARPOST.Length];
Response_Class _CR = new Response_Class();
if (ICOARPOST == null || ICOARPOST.Length == 0)
{
_CR.status = Constant.False;
_CR.datapost = responcearrayPost;
return Ok(_CR);
}
for (int i = 0; i < ICOARPOST.Length; i++)
{
MyClass s = await _Services.Method(ICOARPOST[i].param1, ICOARPOST[i].param2);
responcearrayPost[i] = s;
}
_CR.status = Constant.True;
_CR.datapost = responcearrayPost;
return Ok(_CR);
}
这是我在类中返回值的函数
public async Task<MyClass> AsyncDay(string param1, string param2)
{
MyClass _myclass = new MyClass();
if (Time >= 86400000 && Time < 172800000)
{
if (day == 1)
{
}
else
{
_myclass.param1 = "123";
_myclass.param2 = "1";
_myclass.param3 = "success";
_myclass.param4 = "true";
}
}
else if (Time >= 172800000 && Time < 259200000)
{
if (day == 2)
{
}
else
{
_myclass.param1 = "123";
_myclass.param2 = "1";
_myclass.param3 = "success";
_myclass.param4 = "true";
}
}
return _myclass;
}
公共异步任务AsyncDay(字符串param1,字符串param2)
{
MyClass _MyClass=新的MyClass();
如果(时间>=86400000和时间<17280000)
{
如果(天==1)
{
}
其他的
{
_myclass.param1=“123”;
_myclass.param2=“1”;
_myclass.param3=“成功”;
_myclass.param4=“true”;
}
}
否则如果(时间>=17280000和时间<259200000)
{
如果(天==2)
{
}
其他的
{
_myclass.param1=“123”;
_myclass.param2=“1”;
_myclass.param3=“成功”;
_myclass.param4=“true”;
}
}
返回我的类;
}
我想你想要的是这样的:
List<MyClass> items = new List<MyClass>();
for (int i = 0; i < ICOARPOST.Length; i++)
{
MyClass s = await _Services.Method(ICOARPOST[i].param1, ICOARPOST[i].param2);
//no idea if this is how it works. might as well be s.Value != null or something similar
if(s != null)
items.add(s);
}
responcearrayPost = items.ToArray();
List items=newlist();
for(int i=0;i
但老实说,您的示例还远未完成,所以我无法判断这是否对您有任何好处。您正在使用循环执行方法,它会得到sMyClass的哪个类对象作为响应。 检查值是否为null或空,然后限制在对象中赋值 responcearrayPost[i]=s
if(s !=null)
responcearrayPost[i] = s;
为什么不使用
列表
var resultList=List();
for(int i=0;i
我已经在ConsoleApplication中编写了此代码,但它应该可以工作。如果您有对象的实例,可以像下面这样轻松地检查它:
public class JsonArray
{
public string param1 { get; set; }
public string param2 { get; set; }
public string param3 { get; set; }
public string param4 { get; set; }
}
public class MyClass
{
public List<JsonArray> json_array { get; set; }
public bool status { get; set; }
}
public static void Main()
{
// init
var myClassObj = new MyClass();
myClassObj.json_array = new List<JsonArray>();
myClassObj.json_array.Add(new JsonArray { param1 = null, param2 = null, param3 = null, param4 = null });
myClassObj.json_array.Add(new JsonArray { param1 = null, param2 = null, param3 = null, param4 = null });
myClassObj.status = true;
// to JSON
var json = FilterAndGetJsonFromObject(myClassObj);
}
public static string FilterAndGetJsonFromObject(MyClass myClassObj)
{
// filter null params
foreach (var jsonArray in myClassObj.json_array.ToList())
{
if (jsonArray.param1 == null && jsonArray.param2 == null && jsonArray.param3 == null && jsonArray.param4 == null)
{
myClassObj.json_array.Remove(jsonArray);
}
}
// serialize to json
return new JavaScriptSerializer().Serialize(myClassObj);
}
公共类JsonArray
{
公共字符串param1{get;set;}
公共字符串param2{get;set;}
公共字符串param3{get;set;}
公共字符串param4{get;set;}
}
公共类MyClass
{
公共列表json_数组{get;set;}
公共布尔状态{get;set;}
}
公共静态void Main()
{
//初始化
var myClassObj=新的MyClass();
myClassObj.json_数组=新列表();
添加(新的JsonArray{param1=null,param2=null,param3=null,param4=null});
添加(新的JsonArray{param1=null,param2=null,param3=null,param4=null});
myClassObj.status=true;
//到JSON
var json=FilterAndGetJsonFromObject(myClassObj);
}
公共静态字符串筛选器DdgetJSonFromObject(MyClass myClassObj)
{
//过滤空参数
foreach(myClassObj.json_array.ToList()中的var jsonArray)
{
if(jsonArray.param1==null&&jsonArray.param2==null&&jsonArray.param3==null&&jsonArray.param4==null)
{
myClassObj.json_array.Remove(jsonArray);
}
}
//序列化为json
返回新的JavaScriptSerializer().Serialize(myClassObj);
}
Cab您可以编辑您的问题,以显示“类中的所有值均为null”的示例,以及您如何创建json?@stuartd我添加了更多代码,请检查。当我返回类时,类参数为null。请仔细查看您的代码。这样,即使进行了空检查,数组中仍然会出现空值。
if(s !=null)
responcearrayPost[i] = s;
var resultList = List<MyClass>();
for (int i = 0; i < ICOARPOST.Length; i++)
{
MyClass s = await _Services.Method(ICOARPOST[i].param1, ICOARPOST[i].param2);
if(s != null)
{
resultList.Add(s);
}
}
public class JsonArray
{
public string param1 { get; set; }
public string param2 { get; set; }
public string param3 { get; set; }
public string param4 { get; set; }
}
public class MyClass
{
public List<JsonArray> json_array { get; set; }
public bool status { get; set; }
}
public static void Main()
{
// init
var myClassObj = new MyClass();
myClassObj.json_array = new List<JsonArray>();
myClassObj.json_array.Add(new JsonArray { param1 = null, param2 = null, param3 = null, param4 = null });
myClassObj.json_array.Add(new JsonArray { param1 = null, param2 = null, param3 = null, param4 = null });
myClassObj.status = true;
// to JSON
var json = FilterAndGetJsonFromObject(myClassObj);
}
public static string FilterAndGetJsonFromObject(MyClass myClassObj)
{
// filter null params
foreach (var jsonArray in myClassObj.json_array.ToList())
{
if (jsonArray.param1 == null && jsonArray.param2 == null && jsonArray.param3 == null && jsonArray.param4 == null)
{
myClassObj.json_array.Remove(jsonArray);
}
}
// serialize to json
return new JavaScriptSerializer().Serialize(myClassObj);
}