如何解析JSONString到数据集?
我正在使用Web服务创建一个C#应用程序。 在我的Web服务中,我使用的是JSONString
数据。 但是我无法将此字符串转换为DataSet
。
我的JSONString
是:
{ "Table": [ { "DisplayVoucherNumber": "A101239Z", "ActualDate": "08/07/2013", "AccountName": "shyamal", "Pcs": "50", "Weight": "500.000" } ], "Table1": [ { "DisplayVoucherNumber": "R101249B", "ActualDate": "11/07/2013", "AccountName": "vipul", "NetWeight": "90.000", "Weight": "80.000", "Difference": "10.000" }, { "DisplayVoucherNumber": "R101249B", "ActualDate": "11/07/2013", "AccountName": "vipul", "NetWeight": "500.000", "Weight": "100.000", "Difference": "400.000" } ] }
你的问题不是很清楚。 我想你想做的就是在deserializtion之后找回一个可以映射到你数据集的对象。 就像是
DataSet myDataSet= JsonConvert.DeserializeObject(jsonstring)
并且您继续使用数据集进行编码。 比如访问数据集中的数据表。
如果这是你想要达到的目标,并且不想像以前的答案那样使用你自己的POCO。 您可能需要先创建一个Typed DataSet
给定符合XML架构定义语言(XSD)标准的XML架构,您可以使用随Windows软件开发工具包(SDK)提供的XSD.exe工具生成强类型DataSet。 有关强类型数据集的更多信息
这将允许您使用Deserialize方法使用强类型数据集。
请记住,您必须在XML Schema中模仿您的JSon结构。 为了在最后与你的JSon结构兼容。
作为一个动态 C#解决方案(当你不知道要反序列化的对象结构时)使用@ Dhaval的答案并且在使用Deserialize<>()
方法后,我使用下面的方法来做到这一点:
更新: DataSet.ReadXml
在读取XML节点时有一些选项作为XmlReadMode
:
private static DataSet ReadDataFromJson(string jsonString, XmlReadMode mode = XmlReadMode.Auto) { //// Note:Json convertor needs a json with one node as root jsonString = "{ "rootNode": {" + jsonString.Trim().TrimStart('{').TrimEnd('}') + @"} }"; //// Now it is secure that we have always a Json with one node as root var xd = JsonConvert.DeserializeXmlNode(jsonString); //// DataSet is able to read from XML and return a proper DataSet var result = new DataSet(); result.ReadXml(new XmlNodeReader(xd), mode); return result; }
例如,如果要从数据推断强类型模式:
var dataset = ReadDataFromJson(yourString, XmlReadMode.InferTypedSchema);
Private Function convertJsonStringToDataSet(jsonString As String) As DataSet Dim xd As New XmlDocument() jsonString = "{ ""rootNode"": {" + jsonString.Trim().TrimStart("{"c).TrimEnd("}"c) + "} }" xd = DirectCast(Newtonsoft.Json.JsonConvert.DeserializeXmlNode(jsonString), XmlDocument Dim ds As New DataSet() ds.ReadXml(New XmlNodeReader(xd)) Return ds End Function
我更喜欢你遵循尼克的建议……也许你的网络服务应该被修改,因为我看到每个表和Table1和内部属性的类似属性……
-
使用json2csharp.com创建类,我得到了这个
public class Table { public string DisplayVoucherNumber { get; set; } public string ActualDate { get; set; } public string AccountName { get; set; } public string NetWeight { get; set; } public string Weight { get; set; } public string Pcs { get; set; } public string Difference { get; set; } }
-
使用反序列化json字符串
List
list = JsonConvert.DeserializeObject
- 您可以访问该列表对象以放在DataSet上。
-
为反序列化数据创建一个类 。
-
使用 :
上述就是C#学习教程:如何解析JSONString到数据集?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
YourClass yourObject = JsonConvert.DeserializeObject
(jsonStr);
>(jsonstring);
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/986841.html
赞 (0)Csharp/C#教程:Outlook 2007 vsto加载项。 获取电邮发件人地址分享上一篇 2021年12月22日Csharp/C#教程:在C#中编译时间reflection分享下一篇 2021年12月22日