2016-12-22 2 views
3

Я отправляю к API и получить ответкак я могу прочитать каждый поданной JSON

HttpWebResponse response = (HttpWebResponse)request.GetResponse();   
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); 
var jsonResponse = JsonConvert.SerializeObject(responseString , Formatting.Indented); 

и это значение jsonResponse:

"{\"Id\":333, 
    \"Name\":\"TestProduct\", 
    \"ApplicationId\":\"9edcc30d-7852-4c95-a6b2-1bf370655965\", 
    \"Features\":[{ 
     \"Id\":301, 
     \"Name\":\"Sodalis Mobile Client2.0\", 
     \"Code\":\"Beeware.Sodalis.Mobile\", 
     \"ProductId\":0, 
     \"Selected\":null}] 
}" 

, как я могу читать каждый подал ?
как Имя, ApplicationID, Особенности имя- и Особенности-код.

Буду признателен за любую помощь.

+0

Это должно помочь вам http://stackoverflow.com/questions/1207731/how-can-i-deserialize-json-to -a-simple-dictionarystring-string-in-asp-net – Raskayu

+0

@Raskayu Я использовал код в указанной вами ссылке, я получил эту ошибку: «Неожиданный символ, встречающийся при разборе значения: [. Path 'Features', строка 1, позиция 98. ' –

+0

Вы хотите' Deserialize' 'responseString', а не' Serialize'! – vojta

ответ

1

Прежде всего, создать классы, которые будут держать ваш ответ:

public class MyResponse { 
    public int Id {get; set;} 
    public string Name {get; set;} 
    public string ApplicationID {get; set;} 
    public IList<MyFeature> Features {get; set;} 
} 

public class MyFeature { 
    public int Id {get; set;} 
    public string Name {get; set;} 
    public int ProductId {get; set;} 
    public string Selected {get; set;} 

} 

Затем вы можете использовать JsonConvert:

MyResponse response = JsonConvert.DeserializeObject<MyResponse>(responseString); 
string name = response.Name; 
+0

это работает, спасибо –

+0

(Временный комментарий) - Привет, дорогой Войта. Не могли бы вы помочь мне [здесь] (http://chat.stackoverflow.com/rooms/131696/secure-ussd)? – Abraham

2

Вы должны создать класс как

public class Feature 
{ 
    [JsonProperty("Id")] 
    public int Id { get; set; } 

    [JsonProperty("Name")] 
    public string Name { get; set; } 

    [JsonProperty("Code")] 
    public string Code { get; set; } 

    [JsonProperty("ProductId")] 
    public int ProductId { get; set; } 

    [JsonProperty("Selected")] 
    public object Selected { get; set; } 
} 

public class YourApp 
{ 
    [JsonProperty("Id")] 
    public int Id { get; set; } 

    [JsonProperty("Name")] 
    public string Name { get; set; } 

    [JsonProperty("ApplicationId")] 
    public string ApplicationId { get; set; } 

    [JsonProperty("Features")] 
    public IList<Feature> Features { get; set; } 
} 

затем Deserialize это просто

YourApp p = JsonConvert.DeserializeObject<YourApp>(json); 
Console.WriteLine(p.Name + p.ApplicationId); 

Вы можете прочитать все функции, используя Еогеасп так как теперь все Feautures есть в вашем объекте

foreach(Feature AllFeatures in p.Features) 
{ 
    Console.WriteLine(AllFeatures.Name + AllFeatures.Code); 
} 
1

Попробуйте это классы

public class MyResponse 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string ApplicationID { get; set; } 
    public List<MyFeature> Features { get; set; } 
} 

public class MyFeature 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 

    public string Code { get; set; } 
    public int ProductId { get; set; } 

    public bool? Selected { get; set; } 

} 

, то вы можете прочитать JSON этим

string _Json = @"{'Id':333,'Name':'TestProduct','ApplicationId':'9edcc30d-7852-4c95-a6b2-1bf370655965','Features':[{'Id':301,'Name':'Sodalis Mobile Client2.0','Code':'Beeware.Sodalis.Mobile','ProductId':0,'Selected':null}]}"; 
MyResponse M = JsonConvert.DeserializeObject<MyResponse>(_Json); 
+1

он также работает, спасибо за ваш ответ –

Смежные вопросы