2011-11-18 4 views
4

웹 URL에서 가져온 값을 가져와야합니다. 는 JSON 같이 주어진다 :C# 및 ASP.NET에서 JSON 값을 deserialize하는 방법은 무엇입니까?

{"country":{"name":"India","State":"Raj": Count :239}, "Population": 25487} 

는 이제 C#을 사용 인구 카운트 값을 페치 할.

나는 사용을 시도했다 JavaScriptSerializer(); 그러나 문제는 응답 시간이 훨씬 더 느리다는 것이다.

이 JSON 문자열에서 값을 가져 오는 방법을 제안 해주세요. 또한 JSON 데이터로 작업 할 새로운 DataContractJsonSerializer 클래스를 사용할 수 http://json.codeplex.com/

답변

4

나는 개인적으로 그것은 매우 빠른 JSON 시리얼 라이저/디시리얼라이저의

https://github.com/ServiceStack/ServiceStack.Text

사용합니다.

나는 보통 코드를 정돈 할 수있는 확장 메서드를 만듭니다

public static string ToJson(this object _obj) 
    { 

     return JsonSerializer.SerializeToString(_obj); 
    } 

편집 :

데이터의 클래스를 생성하는 것입니다 이러한 값을 가져 오기 위해 빠른 방법 :

public class Country 
{ 
    public string name { get; set; } 
    public string State { get; set; } 
    public int Count { get; set; } 
} 

public class CountryInformation 
{ 
    public Country Country { get; set; } 
    public int Population { get; set; } 
} 

그런 다음, 사용 ServiceStack :

void SomeFunction(string _Json) 
{ 
    var FeedResult = _Json.FromJson<CountryInformation>(); 
} 

다음과 같이 FeedResult에서 값을 가져올 수 있습니다.

FeedResult.Country.name;

+0

+1 아주 좋은 간단한 확장 방법. – Yuck

+0

또한 ServiceStack.Text의 최근 버전은'ToJson ()'과'FromJson ()'확장 메서드와 함께 제공됩니다. – mythz

+0

선생님은 웹 URL www.xyz에서 JSON을 받고 있다면 제게 C# 코드를 써주시겠습니까? com ..... 위의 JSON을 제공한다고 가정 해보십시오. 이제 어떻게 ServiceStack을 사용하여 값을 가져 와서 라벨에 인쇄 할 수 있습니까?희망은 당신이 좀 더 나를 코드 것입니다 .... 감사합니다 – ItsLockedOut

1

하나의 옵션은 Json.NET을 사용하는 것입니다.

0

DataContractSerialiser (이상적으로 피드를 작성하는 경우)를 사용하거나 이상한 형식의 JSON 문자열을 사용하는 경우 linq2json에서 한 번에 하나의 노드를 구문 분석하도록 JSON.net을 사용할 수 있습니다.

1

일반적으로 @misterjingo와 (과) 같은 입력 된 POCO를 사용하는 것이 좋습니다.

var json = "{\"country\":{\"name\":\"India\",\"State\":\"Raj\": \"Count\": 239}, \"Population\": 25487}"; 

var jsonObj = JsonObject.Parse(json); 
var country = jsonObj.Object("country"); 

Console.WriteLine("Country Name: {0}, State: {1}, Count: {2} | Population: {3}", 
    country["name"], country["State"], country["Count"], jsonObj["Population"]); 

//Outputs: 
//Country Name: India, State: Raj, Count: 239 | Population: 25487 

참고 : 그러나 일회성 작업을 위해 당신이처럼 동적으로 분석 할 ServiceStack's Json Serializer를 사용할 수있는 JSON spec는 항상 이중 인용 문자열로 객체 속성 이름이 필요합니다.

ServiceStack의 JsonSerializer는 .NET 용 가장 빠른 Json 시리얼 라이저 much faster than other Json Serializers입니다.

+0

나는 이것을 알지 못했다. 공유해 주셔서 감사합니다! –

관련 문제