将 Json 转换为数据集

时间:2021-06-30 08:33:02

标签: json vb.net api

使用的DLL:Newtonsoft.Json.Linq 当我使用下面的转换器代码转换另一个杰森时,它工作正常。但是当我在转换下面给出的 jason 时出现错误“{”无法将嵌套关系或元素列添加到包含 SimpleContent 列的表中。“}”。如果我将第 1 个座位替换为第 1 个座位,则它工作正常。但我无法更改 JSON 上的任何内容,因为此响应由 3rd 方运营商共享。

注意:我无法对 JSON 进行任何更改。 代码:

    Dim jsonString = System.IO.File.ReadAllText("D:\Json.txt")
    Dim xmlDoc As New XmlDocument
    Dim objDS As DataSet
    xmlDoc = CType(JsonConvert.DeserializeXmlNode("{""DT"":  {" & jsonString.Trim().TrimStart("{").TrimEnd("}") & "} }"), XmlDocument)
    objDS = New DataSet()
    objDS.ReadXml(New XmlNodeReader(xmlDoc))

JSON:

{
   "status":"success",
   "msg":"",
   "data":{
      "block_key":"76570415041123",
      "block_time":"7",
      "ticket_detail":{
         "msrtc":{
            "reservation_charge":"5.0",
            "asn_amount":"1.0",
            "ac_service_charges":"0.0"
         },
         "upsrtc":"NA",
         "hrtc":"NA",
         "rsrtc":"NA"
      },
      "total_fare":280,
      "base_fare":274,
      "operator_commission_rate":"4.45",
      "agent_commission_rate":"85",
      "commission_without_gst":8.78,
      "agent_tds_value":0.44,
      "agent_net_commission":8.34,
      "transaction_amount":271.66,
      "test":{
         "testing":{
            "tripchild_con":"Y",
            "post_passanger":[
               {
                  "title":"Mr",
                  "name":"Ram",
                  "age":"70",
                  "sex":"M",
                  "birth":"0",
                  "seat_no":"45",
                  "subtotal":"280.0",
                  "total":"280",
                  "is_ladies":"false",
                  "mobile":"9579597539",
                  "email":"ram@gmail.com",
                  "id_type":null,
                  "id_number":null,
                  "name_on_id":null,
                  "primary":"True",
                  "ac":"false",
                  "sleeper":"false"
               }
            ],
            "value":{
               "title":"Mr",
               "name":"Ram",
               "age":"70",
               "sex":"M",
               "birth":"0",
               "seat_no":"45",
               "subtotal":"280.0",
               "total":"280",
               "is_ladies":"false",
               "mobile":"9579597539",
               "email":"ram@gmail.com",
               "id_type":null,
               "id_number":null,
               "name_on_id":null,
               "primary":"True",
               "ac":"false",
               "sleeper":"false"
            },
            "senior_citizen_flag":"0",
            "seats":{
               "seats":[
                  "2",
                  "5",
                  "6",
                  "9",
                  "10",
                  "13",
                  "14",
                  "15",
                  "16",
                  "17",
                  "18",
                  "20",
                  "21",
                  "22",
                  "23",
                  "24",
                  "25",
                  "26",
                  "27",
                  "28",
                  "31",
                  "32",
                  "33",
                  "34",
                  "35",
                  "37",
                  "38",
                  "39",
                  "40",
                  "41",
                  "42",
                  "45"
               ],
               "service_id":"724351",
               "fare":"280.0",
               "childFare":"145.0",
               "seniorcitizenfare":"145.0"
            },
            "passengerDetails":"seniorfare else casse",
            "adultFare seniorfare else casse":"274.0",
            "tickets_total_basic_fare":274,
            "adultFare":null
         }
      }
   }
}

1 个答案:

答案 0 :(得分:0)

我认为 Json 结构无法创建 Dataset。

因此您必须自己处理数据并创建它。

见下方来源

         Dim jsonString = System.IO.File.ReadAllText("D:\Json.txt")
         Dim dto As TestDTO

         dto = JsonConvert.DeserializeObject(Of TestDTO)(jsonString)

         MsgBox(dto.status)


Class TestDTO
   Property status As String
   Property msg As String
   Property data As dataDTO
End Class

Class dataDTO
   Property block_key As String
   Property ticket_detail As ticketdetailDTO
End Class

Class ticketdetailDTO
   Property reservation_charge As String
End Class