将JSON响应转换为DataTable

亚当92

我在JSON中提供了以下示例响应。我希望能够将其转换为C#DataTable,以便我可以遍历元素并从那里进行编程。

{
  "totalItems" : 10,
  "pageSize" : 20,
  "page" : 1,
  "items" : [ {
    "type" : "call",
    "uri" : "http://link.com",
    "created" : "2014-07-28T10:02:48.000+0000",
    "callType" : "external",
    "from" : "01234567891",
    "to" : "01234567892",
    "callId" : "ast01-1406541749.604847",
    "links" : {
      "recordings" : "http://link.com"
    }
  }, {
    "type" : "call",
    "uri" : "http://link.com"
    "created" : "2014-07-22T15:21:02.000+0000",
    "callType" : "external",
    "from" : "01234567895",
    "to" : "01234567898",
    "callId" : "ast02-1406042397.63768",
    "links" : {
      "recordings" : "http://link.com"
    }
  } ],
  "nextPage" : "http://link.com"
}

我正在使用JSON.net。问题是当我使用以下方法转换为DataTable时:

DataTable items = JsonConvert.DeserializeObject<DataTable>(jsonString);

调试器返回..

“读取DataTable时出现意外的JSON令牌:StartObject”

有任何想法吗?

伊利亚·迪莫夫(Ilija Dimov)

正如LB建议的那样,您需要创建自定义类,然后将发布的JSON反序列化到其中,而不是DataTable原因很简单:要将JSON字符串反序列化为DataTableJSON字符串,必须遵循某种特定格式。作为DataTable代表的行和列的JSON字符串必须代表一个集合(JavaScript数组)的集合。JSON字符串中的所有嵌套对象也必须是javascript数组的一部分,因为内置的DataTableConverter(当您尝试反序列化JSON以进行DataTable键入时使用)将无法反序列化JSON字符串。您收到的异常是由于以下行:

"links" : {
      "recordings" : "http://link.com"
    }

如果您将其更改为

"links": [{
                "recordings": "http://link.com"
            }]

您将更进一步,可以正确地反序列化到DataTable

下一步是使整个JSON字符串成为javascript数组。像这样的东西:

[{
    "totalItems": 10,
    "pageSize": 20,
    "page": 1,
    "items": [
        {
            "type": "call",
            "uri": "http://link.com",
            "created": "2014-07-28T10:02:48.000+0000",
            "callType": "external",
            "from": "01234567891",
            "to": "01234567892",
            "callId": "ast01-1406541749.604847",
            "links": [{
                "recordings": "http://link.com"
            }]

        },
        {
            "type": "call",
            "uri": "http://link.com",
            "created": "2014-07-22T15:21:02.000+0000",
            "callType": "external",
            "from": "01234567895",
            "to": "01234567898",
            "callId": "ast02-1406042397.63768",
            "links": [{
                "recordings": "http://link.com"
            }]
        }
    ],
    "nextPage": "http://link.com"
}]

之后,您可以DataTable使用以下行将其反序列化为

DataTable items = JsonConvert.DeserializeObject<DataTable>(jsonString);

如果不能更改JSON字符串,则必须按照LB的建议将JSON反序列化为自定义类

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将json响应转换为列表

来自分类Dev

将AppleScript响应转换为JSON

来自分类Dev

将 json 响应转换为表

来自分类Dev

将奇怪的JSON响应转换为简单对象的数组

来自分类Dev

将JSON响应转换为Graph.EducationAssignment对象

来自分类Dev

如何将Powershell JSON响应转换为CSV

来自分类Dev

如何将JSON响应转换为PHP数组

来自分类Dev

将JSON响应转换为(Bootstrap)表

来自分类Dev

Java将json rest api响应转换为图像

来自分类Dev

将 json 响应转换为 C# 变量

来自分类Dev

将 JSON 响应转换为 python 对象

来自分类Dev

将http响应转换为xml

来自分类Dev

无法将响应转换为数组

来自分类Dev

Ajax JSON响应转换为HighCharts

来自分类Dev

有角度的。如何将json响应转换为jsonp响应?

来自分类Dev

任何将 API 字符串响应转换为 json 响应的服务?

来自分类Dev

加特林-将json响应转换为案例类列表

来自分类Dev

将API响应转换为JSON对象时出现问题

来自分类Dev

如何将具有多个JSON对象的Asana API响应转换为Python对象

来自分类Dev

将json响应转换为可用于d3漏斗图的数组

来自分类Dev

使用 Swift 4 Decodable 将字符串 JSON 响应转换为布尔值

来自分类Dev

将接收到的 JSON 响应转换为 Java 中的 List<T>

来自分类Dev

如何将整个 JSON 响应转换为值数组

来自分类Dev

如何在不使用 Room 的情况下将行 JSON 响应转换为 LiveData?

来自分类Dev

Spring Boot @RestController 无法自动将响应转换为 JSON

来自分类Dev

如何将 JSON 响应转换为服务中的角度对象数组?

来自分类Dev

将表示 UCHAR 数组的 json 字符串响应转换为 Byte 数组

来自分类Dev

如何将Okhttp的响应转换为inputstream

来自分类Dev

AWS API Gateway:将响应转换为XML

Related 相关文章

热门标签

归档