我要序列化/反序列化以下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
答案 0 :(得分:0)
在上面的示例类定义中,您已调用类myClass
,但由于result
和ID
是{给定示例中的{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; }
}