首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C# .NET中反序列化复杂的JSON对象?

如何在C# .NET中反序列化复杂的JSON对象?
EN

Stack Overflow用户
提问于 2013-05-02 21:23:29
回答 12查看 178.2K关注 0票数 37

我有一个JSON字符串,我需要一些帮助来反序列化它。

对我来说什么都不管用。这是JSON:

代码语言:javascript
复制
{
    "response": [{
        "loopa": "81ED1A646S894309CA1746FD6B57E5BB46EC18D1FAff",
        "drupa": "D4492C3CCE7D6F839B2BASD2F08577F89A27B4ff",
        "images": [{
                "report": {
                    "nemo": "unknown"
                },
                "status": "rock",
                "id": "7e6ffe36e-8789e-4c235-87044-56378f08m30df",
                "market": 1
            },
            {
                "report": {
                    "nemo": "unknown"
                },
                "status": "rock",
                "id": "e50e99df3-59563-45673-afj79e-e3f47504sb55e2",
                "market": 1
            }
        ]
    }]
}

我有一个类的例子,但我不需要使用这些类。我不介意使用其他一些类。

以下是类:

代码语言:javascript
复制
public class Report
{
    public string nemo { get; set; }
}

public class Image
{
    public Report report { get; set; }
    public string status { get; set; }
    public string id { get; set; }
    public int market { get; set; }
}

public class Response
{
    public string loopa { get; set; }
    public string drupa{ get; set; }
    public Image[] images { get; set; }
}

public class RootObject
{
    public Response[] response { get; set; }
}

我想提一下,我已经有了Newtonsoft.Json,所以我可以在那里使用一些函数。

我该怎么做呢?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2013-05-02 23:44:25

我在我的代码中像这样使用它,它工作得很好

下面是你需要写的一段代码

代码语言:javascript
复制
using System.Web.Script.Serialization;

JavaScriptSerializer oJS = new JavaScriptSerializer();
RootObject oRootObject = new RootObject();
oRootObject = oJS.Deserialize<RootObject>(Your JSon String);
票数 47
EN

Stack Overflow用户

发布于 2013-05-02 21:26:28

应该是这样的:

代码语言:javascript
复制
var jobject = JsonConvert.DeserializeObject<RootObject>(jsonstring);

您可以将json字符串粘贴到此处:http://json2csharp.com/以检查您的类是否正确。

票数 43
EN

Stack Overflow用户

发布于 2013-05-02 21:31:06

如果您使用的是C# 2010或更新版本,则可以使用dynamic type

代码语言:javascript
复制
dynamic json = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonstring);

然后,您可以使用点表示法访问动态对象中的属性和数组:

代码语言:javascript
复制
string nemo = json.response[0].images[0].report.nemo;
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16339167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档