如何读取JSON的子字符串并转换为对象列表

vom3gejh  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(96)

我有以下JSON字符串。

{
  {
    "ResponseXML": null,
    "Number": null,
    "RecordType": {
      "Type": "Location"
    },
    "LocationLicense": [
      {
        "CompanyName": "NGM",
        "CompanyCode": "000",
        "STADesc": "Arizona",
        "STACode": "02",
        "PostalAbbr": "AZ",
        "LICNumber": "0"
      },
      {
        "CompanyName": "MSA Insurance Co of SC",
        "CompanyCode": "004",
        "STADesc": "Arizona",
        "STACode": "02",
        "PostalAbbr": "AZ",
        "LICNumber": "0"
      }
    ]
  }

字符串
下面的代码成功地提取了LocationLicense对象并将它们转换为LocationLicense对象的List。

var resStr = await _client.PostAsync(_uri, new StringContent(Req_json_data, Encoding.Default, "application/json"));
    var obj = resStr.Content.ReadAsStringAsync().Result;
            _log.Debug(callingApp + " returned: " + obj);
    dynamic agentobj = JsonConvert.DeserializeObject(obj);
    string locations = JsonConvert.SerializeObject(agentobj.LocationLicense);


上面显示的最后一行返回null。
如何获取“LocationLicense”部分并将其转换为List<LocationLicense>

rnmwe5a2

rnmwe5a21#

你的json无效。但是如果你在开始的时候去掉一个 curl 的brasket,你可以使用这个代码

JArray locationLicenses = (JArray) JObject.Parse(obj)["LocationLicense"];

string companyCode = (string) locationLicenses[1]["CompanyCode"];

字符串
如果你喜欢非常慢的代码,你可以使用动态

dynamic LocationLicenses=locationLicenses.ToObject<dynamic>();
string companyCode =  locationLicenses[1].CompanyCode;


但恕我直言,最好创建一个LocationLicense类

List<LocationLicense> locationLicenses = JObject.Parse(obj)["LocationLicense"]
                                                .ToObject<List<LocationLicense>>();

相关问题