尝试将JSON数组转换为DataTable C时的异常#

时间:2017-03-14 17:18:52

标签: c# json datatable

我试图将一系列json值放入C#DataTable中。我正处于Visual Studio识别json对象的位置,但我收到此错误:

  

Newtonsoft.Json.JsonSerializationException:'在其他文本中找到   完成反序列化对象后的JSON字符串。'

以下是json数组的示例:

{
  "aaData": [
    [
      1,
      "Stop",
      "14/03 15:30:03",
      "14/03 15:30:58",
      0,
      "Address",
      "Lat, Long",
      184,
      0,
      9,
      "False"
    ],
    [
      1,
      "Stop",
      "14/03 15:30:03",
      "14/03 15:30:58",
      0,
      "Address",
      "Lat, Long",
      184,
      0,
      9,
      "False"
    ]
  ]
}

我正在使用此代码:

JToken token = JObject.Parse(responsetext);
string apistatus = token.SelectToken("aaData").ToString();
DataSet table = JsonConvert.DeserializeObject<DataSet>(apistatus);

但是在最后一行是抛出异常。

如果我将字符串apistatus打印到控制台,我可以看到它已经有了数组 - 甚至在VS中使用JSON Visualiser时,数组也被识别 - 但不确定是什么问题。这是控制台中的字符串apistatus:

   [
    [
      1,
      "Stop",
      "14/03 15:30:03",
      "14/03 15:30:58",
      0,
      "Address",
      "Lat, Long",
      184,
      0,
      9,
      "False"
    ],
    [
      1,
      "Stop",
      "14/03 15:30:03",
      "14/03 15:30:58",
      0,
      "Address",
      "Lat, Long",
      184,
      0,
      9,
      "False"
    ]
  ]

我做错了什么?或者有更好的方法将这个特定的json数组值放入DataTable中吗?

1 个答案:

答案 0 :(得分:0)

我不确定你要做什么。如果要解析json,可以直接使用DeserializeObject

Demo

using System;
using System.Collections.Generic;
using Newtonsoft.Json;

public class Data
{
    public List<List<object>> AaData { get; set; }
}    

public class Program
{
    public static void Main()
    {
        var json = ""; // your json here
        var m = JsonConvert.DeserializeObject<Data>(json);
        Console.WriteLine(m.AaData[0][0]);
        Console.WriteLine(m.AaData[1][2]);
    }
}