[英]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.