所有,我知道这个问题已被多次询问过,我觉得我已经在这里看过每一个问题!我有一个C#Winforms应用程序正在调用外部webhook,提取JSON格式的数据。我需要获取此数据并将其转换为数据表,并将最终结果导入数据库。我坚持的事情,并且已经持续了一天半,试图将JSON数据解析为XML。
以下是我从webhook获取的JSON数据(示例):
[
["Item Title",
"Bidder Name",
"Bidder Email",
"Bidder Phone Number",
"Bidder Username",
"Bid Amount",
"Bid Time",
"Operation",
"Auto Bid Amount",
"Bidder Address",
"Bidder City",
"Bidder State",
"Bidder Country"
],
["Test item 1(#)"],
["",
"Tom Kelly",
"tomkelly7630@gmail.com",
"6303278300",
"testaccount",
"50.0",
"07/09/2016 07:17 PM CDT",
"Bid Amount",
null,
null,
null,
null,
"US"
]
]
起初我尝试使用DeserializeXMLNode函数,但这没有用。
XmlNode xml = JsonConvert.DeserializeXmlNode(body, "BiddingHistory");
然后我想我会使用DeserializeObject函数,但是再次,不工作。
var jRst = JsonConvert.DeserializeObject(body);
当我使用DeserializeObject函数时,我得到以下结果:
{[
[
"Item Title",
"Bidder Name",
"Bidder Email",
"Bidder Phone Number",
"Bidder Username",
"Bid Amount",
"Bid Time",
"Operation",
"Auto Bid Amount",
"Bidder Address",
"Bidder City",
"Bidder State",
"Bidder Country"
],
[
"Test Item 1"
],
[
"",
"Tom Kelly",
"tomkelly7630@gmail.com",
"6303278300",
"testaccount",
"75.0",
"07/30/2016 06:14 PM CDT",
"Bid Amount",
null,
null,
null,
null,
"US"
]
]}
将对象转换为字符串后,我通过XMLNodeConverter运行它,并且它在#34;#"上失败了。字符,所以我做了一个字符串替换并取出了那个字符(无论如何都不需要,我无法控制JSON数据中的内容)然后再次运行我的代码。
XmlNode xml = JsonConvert.DeserializeXmlNode(sBody, "BiddingHistory");
所以现在我得到的是这个错误:
XmlNodeConverter只能转换以对象
开头的JSON
有人请指引我朝这个正确的方向前进吗?我认为这是一件很简单的事情,而且我过于复杂。
感谢。
答案 0 :(得分:1)
您收到错误,因为您的JSON数据是一个数组,您所做的是:
XmlNode xml = JsonConvert.DeserializeXmlNode(sBody, "BiddingHistory");
上面的代码行只适用于JSON对象。
因此,如果你的JSON是一个数组,那么试试这个:
XmlNode xml = JsonConvert.DeserializeXmlNode("{\"Row\":" + sBody + "}", "BiddingHistory").ToXmlString();
答案 1 :(得分:1)
使用nuget Service Stack
中的服务堆栈添加对您的计划的引用
using ServiceStack;
将您的json转换为对象
var jRst = JsonConvert.DeserializeObject(body);
之后,您可以使用服务堆栈获取xml,如下所示
var xml = jRst.ToXml();