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 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测