Census 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로 구문 분석하는 가장 좋은 방법은 무엇이라고 생각하십니까?
이제 나만의 파서를 작성하고 있지만 (분할 등을 사용하여) 데이터를 직접 파싱하는 더 쉬운 방법이 있기를 바랍니다. 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])
});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다