繁体   English   中英

如何使用C#中的多个嵌套JSON对象创建DataTable

[英]How do I Create DataTable from with multiple nested JSON Objects in C#

每当我获取动态JSON数据时,它都可以是JSON数组或简单的JSON对象或嵌套的JSON对象。

我正在尝试反序列化并将JSON对象/数组转换为DataTable,以便使用Newtonsoft.Json进行进一步处理。

我当前的代码是

public DataTable ConvertJson2DataTable(string jdata)
    {
        DataTable dt = null;

        try {
            dt = (DataTable)JsonConvert.DeserializeObject(jdata, (typeof(DataTable)));
        }
        catch (Exception ex)
        {
            MessageBox.Show("exception: " +ex.Message.ToString());

        }

        return dt;
    }

它适用于常规JSON对象和数组。

但是,当使用某些复杂的JSON对象时,会收到“在完成反序列化对象后在JSON字符串中找到其他文本”。

这是我的示例JSON数据

{
  "ads": {
    "items": [],
    "total": 0,
    "page": 1
  },
  "member": {
    "memberId": "649991",
    "displayName": "",
    "email": "hasaxxx@hotodeal.com",
    "memberStatus": "Y",
    "smiId": "7aa205ea-7aa2-7aa2-7aa2-7aa205eac183",
    "facebookId": "100001412016857",
    "registerDate": null,
    "emailConfirmed": false,
    "smsConfirmed": false,
    "facebookConfirmed": false,
    "lineId": null,
    "wechatId": null,
    "displayImage": "",
    "firstName": "Hasadin",
    "lastName": "Pankran",
    "telephone": "",
    "mobile": null,
    "listingCount": {
      "online": 0,
      "edit": 0,
      "waiting": 0
    },
    "phones": null
  }
}    

由于表/数据表代表用于复杂数据结构或关系模型的简单数据结构,因此应将其转换为数据集而不是数据表。

用于转换为数据集的JSON结构应如下所示:

{
    "ads": [{ 
         "total": 0, 
         "page": 1 
          }], 
    "member": [{
        "memberId": "649991",
        "displayName": "",
        "email": "hasaxxx@hotodeal.com",
        "memberStatus": "Y",
        "smiId": "7aa205ea-7aa2-7aa2-7aa2-7aa205eac183",
        "facebookId": "100001412016857",
        "registerDate": null,
        "emailConfirmed": false,
        "smsConfirmed": false,
        "facebookConfirmed": false,
        "lineId": null,
        "wechatId": null,
        "displayImage": "",
        "firstName": "Hasadin",
        "lastName": "Pankran",
        "telephone": "",
        "mobile": null 
        }] 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM