如何解析JSONString到数据集?

Chi*_*mar 4 c# json type-conversion

我正在使用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"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

shA*_*A.t 12

作为动态 C#解决方案(当你不知道要反序列化的对象结构时)使用@ Dhaval的答案并且在使用invaliding 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;
}
Run Code Online (Sandbox Code Playgroud)

例如,如果要从数据推断强类型模式:

var dataset = ReadDataFromJson(yourString, XmlReadMode.InferTypedSchema);
Run Code Online (Sandbox Code Playgroud)


Oua*_*ATA 9

你的问题不是很清楚.我想你想做的就是在反序列化之后找回一个可以映射到你数据集的对象.就像是

DataSet myDataSet= JsonConvert.DeserializeObject<DataSet>(jsonstring)
Run Code Online (Sandbox Code Playgroud)

你继续用数据集编码.比如访问数据集中的数据表.

如果这是你想要达到的目标,并且不想像以前的答案那样使用你自己的POCO.您可能需要先创建一个Typed DataSet

给定符合XML架构定义语言(XSD)标准的XML架构,您可以使用随Windows软件开发工具包(SDK)提供的XSD.exe工具生成强类型DataSet. 有关强类型数据集的更多信息

这将允许您使用Deserialize方法使用强类型数据集.

请记住,您必须在XML Schema中模仿您的JSon结构.为了在最后与你的JSon结构兼容.