簡體   English   中英

將二維數組字符串解析為 .net

[英]parse two-dimensional array string to .net

我正在以字符串格式從人口普查 API 中檢索以下數據。

[["NAME","B01001_001E","state","county","tract","block group"],
["Block Group 1, Census Tract 1.10, Franklin County, Ohio","1165","39","049","000110","1"],
["Block Group 2, Census Tract 1.10, Franklin County, Ohio","1038","39","049","000110","2"],
["Block Group 3, Census Tract 1.10, Franklin County, Ohio","551","39","049","000110","3"],
["Block Group 4, Census Tract 1.10, Franklin County, Ohio","881","39","049","000110","4"]]

您認為將這些數據解析為 List 或者甚至是我們使用列名的 DataTable 的最佳方法是什么?

我現在正在編寫自己的解析器(使用 split 等),但我希望有一種更簡單的方法可以直接為您解析數據。 JSON 序列化程序將無法工作,因為它不是 json 數據(沒有鍵值對)。

謝謝!

你可以只使用Json.NET (畢竟,它是有效的 JSON

首先,創建一個將代表您的實體的類:

public class Entity
{
    public string Name { get; set; }
    public int B01001_001E { get; set; }
    public int State { get; set; }
    public int County { get; set; }
    public int Tract { get; set; }
    public int BlockGroup { get; set; }
}

然后,反序列化您的數據:

IEnumerable<string[]> records = JsonConvert.DeserializeObject<IEnumerable<string[]>>(data);

IEnumerable<Entity> entities = 
records.Skip(1) // We skip the header row
.Select(r => new Entity()
{
    Name = r[0],
    B01001_001E = Convert.ToInt32(r[1]),
    State = Convert.ToInt32(r[2]),
    County = Convert.ToInt32(r[3]),
    Tract = Convert.ToInt32(r[4]),
    BlockGroup = Convert.ToInt32(r[5])
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM