如何从可能无效的 JSON 字符串中提取内部对象?



我从 API 收到此响应

{rn  "VAL_VER_ZERO_TURN" : {rn    "J_ID" : "345",rn    "DIS_CODE" : "WV345"rn  }rn}

我得到这个字符串作为webClient.DownloadString(uri(的响应 但是当将其转换为 JSON 时,结果为空白。

JsonConvert.PopulateObject(response, rockInfo(;

当我尝试硬编码字符串(而不是webClient.DownloadString(uri((时,它可以工作

response = {"J_ID" : "345",rn    "DIS_CODE" : "WV345"rn  }";

我在这里理解的是当我向它提供带有前导和尾随换行符的实习 JSON 对象时它的工作。 但是我不知道如何提取该内部JSON对象。

您可以使用JObject.Parse(response)来访问不同的对象,就像遍历字典一样。

var jobject = JObject.Parse(response);
var abc = jobject["VAL_VER_ZERO_TURN"];

您可以继续向下钻取每个结果。

我建议将Json转换为类(json2csharp(并使用JsonConvert.PopulateObject来读取内部对象。下面是示例代码。

public class VALVERZEROTURN
{
public string J_ID { get; set; }
public string DIS_CODE { get; set; }
}
public class RootObject
{
public VALVERZEROTURN VAL_VER_ZERO_TURN { get; set; }
}
static void Main(string[] args)
{
string response = "{rn  "VAL_VER_ZERO_TURN" : {rn    "J_ID" : "345",rn    "DIS_CODE" : "WV345"rn  }rn}";
RootObject rockInfo = new RootObject();
JsonConvert.PopulateObject(response, rockInfo);
Console.WriteLine($"J_ID: {rockInfo.VAL_VER_ZERO_TURN.J_ID}, DIS_CODE: {rockInfo.VAL_VER_ZERO_TURN.DIS_CODE} ");
}

相关内容

  • 没有找到相关文章

最新更新