【问题标题】:How do I Create DataTable from with multiple nested JSON Objects in C#如何在 C# 中使用多个嵌套的 JSON 对象创建 DataTable
【发布时间】:2016-03-13 23:03:23
【问题描述】:

每次我获取动态 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
  }
}    

【问题讨论】:

    标签: javascript c# arrays json


    【解决方案1】:

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

    转换成数据集的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 
            }] 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多