2017-05-23 3 views
0

これはAPIから取得したデータです。複数の応答を持つAPIデータを解析および逆シリアル化する方法

[{"SectionName":"kothagudem12345","CircleName":"patny1234567890","Division":"paradise1234567","SubDivision":null,"LocationName":null,"City":"hyderabad123456","IsActive":1.0,"IsDeleted":0,"returnMessage":null,"Id":127.0,"CreatedBy":null}, 

{"SectionName":"section ds","CircleName":"circle ds","Division":"division ds","SubDivision":"sub ds","LocationName":"loc ds","City":"city ds","IsActive":1.0,"IsDeleted":0,"returnMessage":null,"Id":90.0,"CreatedBy":null}] 

私は、下記の単一の応答IE用のAPI

string geturl = "http://192.168.0.60/mdaswebservices/api/inventory/section/"; 
string json = client.DownloadString(geturl); 

からこのデータを取得するために、次のコードを使用し、私は

{"SectionName":"SECTION1","CircleName":"Malkajgiri","Division":"Malkajgiri","SubDivision":"Vasanthapuri ","LocationName":"Malkajgiri","City":"Hyderabad","IsActive":1.0,"IsDeleted":0,"returnMessage":null,"Id":2.0,"CreatedBy":null} 

解析のための私のコードを解析し、デシリアライズすることができますよ単一の応答

JObject o = JObject.Parse(json); 
var results = JsonConvert.DeserializeObject<dynamic>(json); 

は、解析し、私は正確にJSONと一致していません

public class Section 
    { 
     public int Id { get; set; } 
     public string SectionName { get; set; } 
     public float? IsActive { get; set; } 
     public float? IsDeleted { get; set; } 
     public string LocationName { get; set; } 
     public string DivisionName { get; set; } 
     public string SubDivisionName { get; set; } 
     public string CircleName { get; set; } 
     public string CityName { get; set; } 

    } 
+0

試みた場合は、今sections内のデータを持っている - VAR結果= JsonConvert.DeserializeObject <リスト

>(JSON)。 –

+0

..Jobject o = new jobject.parse(json); JsonReaderからJObjectを読み込む際にエラーが発生しました。現在のJsonReaderアイテムはオブジェクトではありません: – Neha

+0

JObjectをJArrayに置き換えてみてください。すなわち、 - JArray o = JArray.Parse(json); –

答えて

0

ご希望のクラスの下にモデルクラスへの応答のそれぞれを格納できるように、複数の応答をデシリアライズする方法、異なる名前のプロパティがいくつかあります。

あなたはJSONに合わせてクラスを変更することができ、次のいずれか

public class Section 
{ 
    public double Id { get; set; } 
    public string SectionName { get; set; } 
    public double IsActive { get; set; } 
    public int IsDeleted { get; set; } 
    public string LocationName { get; set; } 
    public string Division { get; set; } 
    public string SubDivision { get; set; } 
    public string CircleName { get; set; } 
    public string City { get; set; } 

    public object returnMessage { get; set; } 
    public object CreatedBy { get; set; } 
} 

ORその後JsonProperty

public class Section 
{ 
    public int Id { get; set; } 
    public string SectionName { get; set; } 
    public float? IsActive { get; set; } 
    public float? IsDeleted { get; set; } 
    public string LocationName { get; set; } 
    public string DivisionName { get; set; } 

    [JsonProperty("SubDivision")] 
    public string SubDivisionName { get; set; } 
    public string CircleName { get; set; } 

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

とプロパティに注釈を付ける、あなたが使用することができます。ちょうどキャスト

var results = JsonConvert.DeserializeObject<IEnumerable<Section>>(json); 
+0

私は自分のクラスを変更しました。まだ "JsonReaderからJObjectを読み込み中にエラーが発生しました。現在のJsonReaderアイテムはオブジェクトではありません:" at Jobject o = new jObject.parse(json); line – Neha

+0

そのビットを削除します。 'var results = JsonConvert.DeserializeObject >(json);'私の答えに従って – Alex

-1

応答は、以下のようにlistタイプになります。

List<Section> sections = new List<Section>(); 
HttpClient client = new HttpClient(); 
string geturl = "http://192.168.0.60/mdaswebservices/api/inventory/section/"; 
HttpResponseMessage response = client.GetAsync(geturl).Result; 
if (response.IsSuccessStatusCode) 
{ 
    sections = response.Content.ReadAsAsync<List<Section>>().Result; 
} 
else 
{ 
    sections = new List<Section>(); 
} 

とステータスが200 OK