C# 在 JSON 内反序列化 JSON

C# Deserialize JSON within JSON

我有一条 JSON 字符串形式的消息,看起来像这样:

{"Event":"Payment", "Desc":"Deschereblahblahblah", Data":"{"Result":3,"Reference":12345 ... } }

我只想知道如何最好地获取消息的数据部分(我目前正在使用 JavascriptSerializer),然后将内部 "Data" 放入另一个变量。我可以很容易地获取事件,但如果我随后尝试第二次序列化以获取数据,它就会出错!

最好是动态执行,还是使用 类?

如果您只需要在一个地方提取部分数据,我建议您使用 JObject 来自 Newtonsoft Json.Net;

var json =
    "{\"Event\":\"Payment\", \"Desc\":\"Deschereblahblahblah\",\"Data\":{\"Result\":3,\"Reference\":12345 } }";


var data = JObject.Parse(json)["Data"];

var result = data["Result"].Value<int>();
var reference = data["Reference"].Value<int>();

你也可以准备特别的class:

public class Data
{
    public int Result { get; set; }
    public int Reference { get; set; }
}

然后:

var dataInstance = JObject.Parse(json)["Data"].ToObject<Data>();