请教下各位
{\"log_id\":7616486206799412622,\"results\":[{\"location\":{\"height\":543,\"left\":1312,\"top\":644,\"width\":669},\"name\":\"1234\",\"score\":1}]}\n"}
{\"log_id\":1587313827561704838,\"results\":[]}\n"}如果第二条返回值的话就报错误代码:
            JavaScriptSerializer js = new JavaScriptSerializer();   //实例化一个能够序列化数据的类
            ToJsonMy3 list = js.Deserialize<ToJsonMy3>(resulte);    //将json数据转化为对象类型并赋值给list
            string log_id = list.log_id;
            List<results> orderdetail = list.results;
            string name = orderdetail[0].name;
            string score = orderdetail[0].score;        public struct ToJsonMy3
        {
            public string log_id { get; set; }
              public List<results> results;//数组处理       
           // public results results;
        }        public struct results
        {
            public string name { get; set; }
            public string score { get; set; }
            public List<location> location;//数组处理        }
        public struct location
        {
            public string top { get; set; }
            public string left { get; set; }
            public string width { get; set; }
            public string height { get; set; }        }谢谢各位 该如何处理

解决方案 »

  1.   

    你要看你json串是不是真的包含了\n,并且第二条和第一条之间应该有个逗号[{"log_id":7616486206799412622,"results":[{"location":{"height":543,"left":1312,"top":644,"width":669},"name":"1234","score":1}]},
    {"log_id":7616486206799412622,"results":[{"location":{"height":543,"left":1312,"top":644,"width":669},"name":"1234","score":1}]}]
      

  2.   

    说错了,是2种返回结果
    1: {"log_id":1594288546244956330,"results":[]}2: {"log_id":30078127253539397,"results":[{"location":{"height":543,"left":1312,"top":644,"width":669},"name":"cat","score":0.9970706701278687}]}返回参数
    字段 是否必选 类型 说明
    log_id 是 number 唯一的log id,用于问题定位
    results 否 array(object) 识别结果数组
    +name 否 string 分类名称
    +score 否 number 置信度
    +location 否
    ++left 否 number 检测到的目标主体区域到图片左边界的距离
    ++top 否 number 检测到的目标主体区域到图片上边界的距离
    ++width 否 number 检测到的目标主体区域的宽度
    ++height 否 number 检测到的目标主体区域的高度results 空的话报错
      

  3.   

    反序列化显然不会报错
    而是第二种实际里面是没有数据的
     List<results> orderdetail = list.results;
                string name = orderdetail[0].name;
                string score = orderdetail[0].score;
    这个orderdetail 里面没有元素 自然不能orderdetail[0]
      

  4.   

     string name = orderdetail[0].name;
                string score = orderdetail[0].score;
    这个orderdetail 里面没有元素 自然不能orderdetail[0]那怎么处理呢?判断增加?没有元素的话 NAME=""
      

  5.   

    用newtonsoft有个忽略空值的参数
      

  6.   


      当然报错了都不是json  数据 格式!。。     json  是键值对 模式的自己好好检查下数据!!!!!!!!!你的数据都不是json 类型的 string 数据。  就是一个 string 数据 、、!!!!!!!!检查数据  
      

  7.   


    请问下怎么将字符串json格式数据转换成对象
    {"log_id":30078127253539397,"results":[{"location":{"height":543,"left":1312,"top":644,"width":669},"name":"cat","score":0.9970706701278687}]}
    获取到log_id、height、left、top、width、name、score的值
      

  8.   

    r2.log_idr2.result[0].height
      

  9.   


    可以的。这个。如果你不想定义实体类,你用 dynamic 类型直接反序列化也可以的。 
      

  10.   

    先判断一下:
    if (orderdetail.Count > 0) 
    {    
            string name = orderdetail[0].name;
                string score = orderdetail[0].score;
    }
      

  11.   

    或者        string name = orderdetail.Count > 0 ? orderdetail[0].name : "";
                string score = orderdetail.Count > 0 ? orderdetail[0].score : "";