一尘不染

如何反序列化JSON数据?

c#

我是使用JSON数据的新手。

我正在从Web服务读取数据。发送回的查询数据如下:

[["B02001_001E","NAME","state"],
 ["4712651","Alabama","01"],
 ["691189","Alaska","02"],
 ["6246816","Arizona","04"],
 ["18511620","Florida","12"],
 ["9468815","Georgia","13"],
 ["1333591","Hawaii","15"],
 ["1526797","Idaho","16"],
 ["3762322","Puerto Rico","72"]]

有没有一种方法可以反序列化此数据,而无需先定义对象是什么样就可以生成基础对象?在上面的示例中,对象由第一行定义:

           ["B02001_001E","NAME","state"],

通常,Web服务将返回格式化为二维JSON数组的查询数据,其中第一行提供列名,后续行提供数据值。


阅读 223

收藏
2020-05-19

共1个答案

一尘不染

您可以非常轻松地反序列化。C#中的数据结构就是List<string[]>这样,您可以这样做。

  List<string[]> data = JsonConvert.DeserializeObject<List<string[]>>(jsonString);

上面的代码假设您正在使用json.NET。

编辑:请注意json技术上是字符串数组的数组。我更喜欢使用List<string[]>自己的声明,因为它更加直观。它不会对json.NET造成任何问题,如果您希望它是字符串数组的数组,则需要将类型更改为(我认为),string[][]但是在C#中有一些带有锯齿状和2D数组的有趣小陷阱,我真的不知道,所以我就不用在这里处理它。

2020-05-19