2017-05-18 4 views
0

문제

Heres는 내 JSON 개체 :JSON을 C# 사전으로 역 직렬화하려면 어떻게해야합니까?

{ 
    "1000":{ 
       "id": "23445", 
       "latlon": "6780" 
      }, 
    "1001":{ 
       "id": "23454", 
       "latlon": "6784" 
      }, 
    "1002":{ 
       "id": "23245", 
       "latlon": "6180" 
      }, 
    "1003":{ 
       "id": "12345", 
       "latlon": "6740" 
      } 
} 

당신이이 건물의 이름은 I 클래스 변수 이름을 선언 할 수 없습니다

순수한 정수 (1000, 1001, 1002, 1003)입니다 볼 수 있듯이 integar에서 실행하고 System.json.Serialization을 실행하십시오. 라이브러리 기능이 거기에가

public static Dictionary<int, NodeDetail> NodeInfo; 

public class NodeDetail { 
    public ulong id; 
    public int latlon; 

    //Generic class serializer 

    //Generic class deserializer 
} 

:

그러므로 나는에 JSON 파일을로드해야합니까? 또는 JSON 문자열을 기초부터 파싱해야합니까?

ps. 나는 C#에 익숙하지 않다. (C++에서 온다.)

+2

[Newtonsoft의 JSON 라이브러리 사용] (https://www.nuget.org/packages/newtonsoft.json/). 설명서가 풍부하고 여기에 나와 있습니다. 슬프게도, 우리 자신의 파서를 쓰는 날이 지났습니다. –

+0

그래서 그냥 http://www.newtonsoft.com/json/help/html/DeserializeDictionary.htm에 adove JSON 파일을 제공합니까? –

답변

2

Newtonsoft.Json. NuGet에서 가져올 수 있습니다.

간단한 예 :

public static T DeserializeJson<T>(string json) 
{ 
    return JsonConvert.DeserializeObject<T>(json); 
} 

다음

Dictionary<string, object> foo = DeserializeJson<Dictionary<string, object>>(" ... insert JSON here ... "); 

편집 :

Dictionary<int, Dictionary<long, int>> foo = DeserializeJson<Dictionary<int, Dictionary<long, int>>>(" ... insert JSON here ..."); 
: 당신이 당신의 질문에 언급 구조 주어, 당신은 중첩 사전에 직렬화 할 수 있습니다

또한 동일한 Newtonsoft.Json 라이브러리에있는 JObject가 있는데이 라이브러리는 s로 직렬화를 해제하는 데 매우 유용합니다. 사용 가능한 유니폼.

관련 문제