Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我在JsonArray webapi c中得到了空值#_C#_Asp.net_Asp.net Web Api - Fatal编程技术网

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);
        }