我正在尝试访问json中的子值,看起来像这样
{
"event": "InstanceCreated",
"destination": "application",
"data": "{\"pipelineId\":1,\"requestId\":1,\"pid\":24740}"
}
这是我从外部进程获得的字符串。 我正在尝试访问requestId值
dynamic json = JsonConvert.DeserializeObject(s1);
var id = json.data.requestId;
但是我得到的是标题中提到的异常。我已经阅读了所有类似的问题,但找不到能解决我问题的任何东西。我考虑过这样的问题,您可能有太多\这样的转义字符,但这不是我的事,要做Regex.Unescape不会这样做,因为它使字符串变得不可解析。 我也尝试过使用JObject.Parse(s1)或任何其他与类相关的解析方法,但我总是会收到该异常。
我可以访问json的某些值,例如
json.@event
json.destination
json.data
正确地向我返回了相关的值。
我正在使用Newtonsoft.Json和Unity3D
感谢您的帮助
答案 0 :(得分:1)
您的数据字段不是具有您所期望的3个属性的对象,而是一个现在格式化的字符串。您需要从源中获取正确的格式,或者分别对字符串进行反序列化以访问属性。
如何获得预期结果:
{
"event": "InstanceCreated",
"destination": "application",
"data": {
"pipelineId": 1,
"requestId": 1,
"pid": 24740
}
}