2012-11-06 2 views
1

에 문자열을 JSON (같은)을 설정하는 방법, 내가 JSON 인 문자열을 얻을 :내 컨트롤러에서 객체

{ 
    "21": {"Id":21,"DisplayOrder":3, ... snip ... }, 
    "333":{"Id":333,"DisplayOrder":2, ... snip ... }, 
    "591":{"Id":591,"DisplayOrder":1, ... snip ... } 
} 

그렇게하지 그래서 같이 보입니다

String json_string = this.Request.Content.ReadAsStringAsync().Result; 

이 JSON의 구조에서 말을해야 키없이 형식을 지정할 수 없습니다. ID는 해당 사전의 값 내에 있으므로 키가 필요하지 않습니다.

어떤 경우에도 json_string을 내가 구조체의 '행'을 반복 할 때 원하는 두 항목 만 가져올 수있는 방법으로 변환하는 방법은 무엇입니까? Id, DisplayOrder? 그래서 같이

:

int Id = row_item.Id; 
int DisplayOrder = row_item.DisplayOrder; 

감사합니다! 에릭

+0

활용 될 수 이것이 당신이 찾고있는 무엇을 할 수 있습니까? [http://stackoverflow.com/questions/4611031/convert-json-string-to-c-sharp-object][1] [1] : http://stackoverflow.com/ 질문/4611031/convert-json-string-to-c-sharp-object – woobione

+0

http://stackoverflow.com/questions/6620165/how-to-parse-json-in-c –

답변

0
string json = @"{ 
    ""21"": {""Id"":21,""DisplayOrder"":3}, 
    ""333"":{""Id"":333,""DisplayOrder"":2}, 
    ""591"":{""Id"":591,""DisplayOrder"":1}}"; 

var list = new JavaScriptSerializer() 
       .Deserialize<Dictionary<string, Dictionary<string, object>>>(json) 
       .Values 
       .ToList(); 

Console.WriteLine(list[0]["Id"]); // <--21 

또한 Json.Net

var jObj = JsonConvert 
      .DeserializeObject<Dictionary<string, Dictionary<string, object>>>(json) 
      .Values 
      .ToList(); 

Console.WriteLine(jObj[0]["Id"]); 

dynamic와 같은 일이 너무

var jObj = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(json) 
      .Values 
      .ToList(); 

Console.WriteLine(jObj[0].DisplayOrder); 
관련 문제