jonahxuworld 2021-10-15 15:03 采纳率: 93.1%
浏览 41
已结题

C#winform的json取指定值的问题

这是我的json文件

{
  "code": 1,
  "result": {
    "work_order_no": 10001,
    "product_name": "苹果",
    "process_no": 100,
    "process_no_order": 1,
    "tempalte_address": "1.jpg",
    "process_arr": [ 5, 4, 3, 2, 1 ]
  }
}

这是我的代码

JObject jt = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(File.ReadAllText("json2.json"));
            string a=(jt["process_arr"].ToString());
            string b= (jt["process_no"].ToString());

但是会出现报错,如图

img

但是我把json文件去掉变成这样,就可以了,不知道为什么?那我要如何保留我原来的json文件

{
    "work_order_no": 10001,
    "product_name": "苹果",
    "process_no": 100,
    "process_no_order": 1,
    "tempalte_address": "1.jpg",
    "process_arr": [ 5, 4, 3, 2, 1 ]
}

还有一个问题就是,我想显示"process_no"+"-"+"process_arr",类似于100-1,100-2,100-3,但是输出"process_arr"的时候是连带[5,4,3,2,1]输出的,要如何达到100-1,100-2,100-3的效果!

求指教!两个问题,谢谢

  • 写回答

1条回答 默认 最新

  • 秋杪 2021-10-15 15:29
    关注

    json文件格式你没弄明白,json基本格式有object、array、int、string等几种。
    1.第一个问题,你要取 process_no的值,应该是jt["result"]["process_no"],而且这个值是数值型的,不能用ToString来,得用ToInt。
    2.第二个问题,process_arr是一个array数组类型的值,所以你取值也得按数组方式来,例如取数组中第一个值,应该是jt["result"]["process_arr"][0].ToInt(),当然之前要先判断各节点是否存在,否则容易出现你图中的错误,具体你可以百度下,建议先了解json格式基本知识再来写代码。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月26日
  • 已采纳回答 10月18日
  • 修改了问题 10月15日
  • 创建了问题 10月15日

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料