希望有人可以伸出援手......我正在尝试将JSON转换为DataSet,使用下面的示例,但是我遇到了问题。我已经验证了JSON是正确的,使用了Kent建议的方法。感谢您的时间和帮助!
以下是我的JSON:
{"jsonData":[{"item1":"one"},{"item2":"two"}]}
这是我的网络服务C#代码:
[WebMethod]
public string setWorkOrdersUpdated(object jsonData)
{
try
{
XmlDocument xd = new XmlDocument();
xd = (XmlDocument)JsonConvert.DeserializeXmlNode(jsonData.ToString());
DataSet ds = new DataSet();
ds.ReadXml(new XmlNodeReader(xd));
return "success";
}
catch (Exception e)
{
return "ERROR: " + e + "!";
}
}
这是我的错误输出之一: d:“错误:Newtonsoft.Json.JsonReaderException:解析值时遇到意外的字符:S。Path'',第0行,第0位......”
答案 0 :(得分:0)
您使用的是哪个版本?因为我得到了一个不同的错误(Json.net 4.5)。我已经完成了以下操作并且异常已经消失(基本上传递了根元素名称)。
编辑:添加完整代码
string jsonData = "{\"jsonData\":[{\"item1\":\"one\"},{\"item2\":\"two\"}]}";
XmlDocument xd = new XmlDocument();
//xd = (XmlDocument)JsonConvert.DeserializeXmlNode(jsonData.ToString()); //Throws exception "This document already has a 'DocumentElement' node."
xd = (XmlDocument)JsonConvert.DeserializeXmlNode(jsonData.ToString(), "jsonData");
DataSet ds = new DataSet();
ds.ReadXml(new XmlNodeReader(xd));
如果这不能解决你的问题,请告诉我。
答案 1 :(得分:-1)
通过更新我的c#webservice方法解决了这个问题。
传入的JSON如下所示:
'{"data":{"jsonData":[{"id":"1","name":"Alan","url":"http://www.google.com"},{"id":"2","name":"Louis","url":"http://www.yahoo.com"}]}}'
和c#webservice方法如下所示:
[WebMethod]
public string myUpdate(object data)
{
try
{
string json = JsonConvert.SerializeObject(data);
XmlDocument xd = new XmlDocument();
xd = (XmlDocument)JsonConvert.DeserializeXmlNode(json, "jsonData");
DataSet ds = new DataSet();
ds.ReadXml(new XmlNodeReader(xd));
return "success"; //return ds.Tables[0].Rows[0][2].ToString(); //just to test
}
catch (Exception e)
{
return "ERROR: " + e + "!";
}
}