首页 > 解决方案 > 将json字符串反序列化为变量

问题描述

我得到这个我需要反序列化的 json 返回:

{
   "odata.metadata":"http://ausmtsapp01.epicorsaas.com/SaaS203/api/v1/BaqSvc/cLotInfo/$metadata#Epicor.DynamicQuery.QueryResults&$select=PartLot_PartLotDescription,PODetail_LineDesc",
   "value":[
      {
         "PartLot_PartLotDescription":"SL1900301122019",
         "PODetail_LineDesc":"Angle - Steel - A36 - Plain Finish - 3\" x 3\" x 3/8\" x 20' Lg."
      }
   ]
}

我有这段代码可以将 PODetail_LineDesc 部分反序列化为一个变量,并且我不断得到空返回。我究竟做错了什么?

        dynamic jsonDe = JsonConvert.DeserializeObject(response.Content);

        string PODetail_LineDesc = jsonDe.PODetail_LineDesc;
        frmDescription.Text = PODetail_LineDesc;

标签: c#jsondeserialization

解决方案


这是如何:

string PODetail_LineDesc = jsonDe.value[0].PODetail_LineDesc;

您有一个由两个属性组成的动态对象:odata.metadatavaluevalue是一个数组。所以要访问PODetail_LineDesc property你需要先访问value数组。这是完成的,value[0]因为您只有 1 个元素。

根据您的示例,只有一个元素的索引为 0。如果元素更多,则它们的索引为 1、2、3 等等。

通常从数组中获取多个值是通过某种循环来完成的。for, foreach,while是最常见的。


推荐阅读