使用自定义映射C#进行自定义JSON序列化

时间:2019-11-24 15:24:43

标签: c# .net

我要序列化/反序列化以下JSON:

{
    "result": {
        "ID": 1,
        "TITLE": "Example",
        "ARRAY": [
            {
                "Item1": "Result1",
                "Item2": "Result2"
            }
        ]
    }
}

我尝试使用以下类格式,但没有成功...有人可以帮我反序列化吗?

public class myClass
{
    public string ID { get; set; }

    [JsonProperty("TITLE")]
    public string Name { get; set; }
}

obs .:使用命名空间Newtonsoft.JSON

2 个答案:

答案 0 :(得分:0)

在上面的示例类定义中,您已调用类myClass,但由于resultID是{给定示例中的{1}} JSON。 TITLE无法解决任何问题。

我不知道您为什么要拥有一个名为result的属性,该属性映射到myClass,但是,如果您愿意,可以在获得后修改解决方案工作正常。

仍然,我们还没有完成。您还拥有一个名为Name的JSON成员,并且需要为此定义一个单独的类。

仍然存在另一个问题:TITLE JSON嵌套在隐式基础对象中,因此我们也需要对其进行定义。我们称之为ARRAY

result

答案 1 :(得分:0)

如果使用的是Visual Studio,则可以复制JSON并将其粘贴到带有import requests from bs4 import BeautifulSoup as soup d = soup(requests.get('https://en.wikipedia.org/wiki/Ryan_Fitzpatrick').text, 'html.parser') result = [i.get_text(strip=True) for i in d.find('table', {'class':'infobox vcard'}).find_all('tr')[12].find_all('li')] 的任何* .cs文件中。它将生成代表您的JSON的POCO对象,在您的情况下为:

['St. Louis Rams(2005–2006)', 'Cincinnati Bengals(2007–2008)', 'Buffalo Bills(2009–2012)', 'Tennessee Titans(2013)', 'Houston Texans(2014)', 'New York Jets(2015–2016)', 'Tampa Bay Buccaneers(2017–2018)', 'Miami Dolphins(2019–present)']

然后,假设您将JSON包含在名为Edit > Paste Special > Paste JSON as Classes的字符串变量中,则可以按以下方式反序列化它:

public class Rootobject
{
    public Result result { get; set; }
}

public class Result
{
    public int ID { get; set; }
    public string TITLE { get; set; }
    public ARRAY[] ARRAY { get; set; }
}

public class ARRAY
{
    public string Item1 { get; set; }
    public string Item2 { get; set; }
}
相关问题