Wednesday, 15 May 2013

Arrange Deeply Nested Json Array windows phone c# -



Arrange Deeply Nested Json Array windows phone c# -

i have next json string :

{ "response": { "hash": "5e042385c8e1d674056e53483828759e", "resp_code": "user_session_retrieved", "code": 200 }, "structure": { "company": { "company_id": 3, "company_name": "the ministry of vaccines", "alarm_cnt": 4, "regions": [ { "sites": [ { "assets": [ { "asset_id": 71, "asset_name": "unassigned", "alarm_cnt": 0, "active_component_cnt": 1, "components": [ { "latest_reading": "21.6°c", "component_id": 503, "alarm_cnt": 0, "component_type": "analogue - input", "component_name": "ambient", "latest_reading_tstamp": "2014-09-13 04:00:00" } ] }, { "asset_id": 72, "asset_name": "pharmacy fridge", "alarm_cnt": 0, "active_component_cnt": 2, "components": [ { "latest_reading": "6.7°c", "component_id": 499, "alarm_cnt": 0, "component_type": "analogue - input", "component_name": "top", "latest_reading_tstamp": "2014-09-13 04:00:00" }, { "latest_reading": "11.5°c", "component_id": 500, "alarm_cnt": 0, "component_type": "analogue - input", "component_name": "bottom", "latest_reading_tstamp": "2014-09-13 04:00:00" } ] } ], "site_id": 35, "site_name": "acadia pharmacy" } ], "region_name": "acadia pharmacy", "region_id": 25 }, { "sites": [ { "assets": [ { "asset_id": 73, "asset_name": "cold room a", "alarm_cnt": 0, "active_component_cnt": 6, "components": [ { "latest_reading": "-", "component_id": 339, "alarm_cnt": 0, "component_type": "analogue - input", "component_name": "probe 1", "latest_reading_tstamp": "-" }, { "latest_reading": "-", "component_id": 333, "alarm_cnt": 0, "component_type": "digital - input", "component_name": "door", "latest_reading_tstamp": "-" }, { "latest_reading": "-", "component_id": 334, "alarm_cnt": 0, "component_type": "digital - input", "component_name": "mains power", "latest_reading_tstamp": "-" } ] }, { "asset_id": 27, "asset_name": "offices", "alarm_cnt": 0, "active_component_cnt": 3, "components": [ { "latest_reading": "25.4°c", "component_id": 178, "alarm_cnt": 0, "component_type": "analogue - input", "component_name": "boardroom temperature", "latest_reading_tstamp": "2014-08-18 12:50:00" }, { "latest_reading": "probe err. (oc)", "component_id": 179, "alarm_cnt": 0, "component_type": "analogue - input", "component_name": "ice 3 a1 - temperature", "latest_reading_tstamp": "2014-10-22 14:01:00", "sensor_error": true }, { "latest_reading": "25.7°c", "component_id": 182, "alarm_cnt": 0, "component_type": "analogue - input", "component_name": "ice3 - ian's office", "latest_reading_tstamp": "2014-10-22 14:01:00" } ] }, { "asset_id": 26, "asset_name": "peter lamonts fridge", "alarm_cnt": 3, "active_component_cnt": 5, "components": [ { "latest_reading": "25.4°c", "component_id": 175, "alarm_cnt": 1, "component_type": "analogue - input", "component_name": "top probe temperature", "latest_reading_tstamp": "2014-08-18 12:50:00" }, { "latest_reading": "25.4°c", "component_id": 176, "alarm_cnt": 1, "component_type": "analogue - input", "component_name": "mid probe temperature", "latest_reading_tstamp": "2014-08-18 12:50:00" }, { "latest_reading": "25.4°c", "component_id": 177, "alarm_cnt": 1, "component_type": "analogue - input", "component_name": "bottom probe temperature", "latest_reading_tstamp": "2014-08-18 12:50:00" }, { "latest_reading": "on", "component_id": 183, "alarm_cnt": 0, "component_type": "digital - input", "component_name": "mains powerfulness peter lamonts fridge", "latest_reading_tstamp": "2014-08-18 12:50:00" }, { "latest_reading": "open", "component_id": 184, "alarm_cnt": 0, "component_type": "digital - input", "component_name": "door peter lamonts fridge", "latest_reading_tstamp": "2014-08-18 12:50:00" } ] }, { "asset_id": 28, "asset_name": "zero fridge freezer", "alarm_cnt": 0, "active_component_cnt": 3, "components": [ { "latest_reading": "probe err. (oc)", "component_id": 95, "alarm_cnt": 0, "component_type": "analogue - input", "component_name": "zero freezer", "latest_reading_tstamp": "2014-08-18 12:20:00", "sensor_error": true }, { "latest_reading": "probe err. (oc)", "component_id": 96, "alarm_cnt": 0, "component_type": "analogue - input", "component_name": "zero fridge", "latest_reading_tstamp": "2014-08-18 12:20:00", "sensor_error": true }, { "latest_reading": "", "component_id": 103, "alarm_cnt": 0, "component_type": "digital - input", "component_name": "mains power", "latest_reading_tstamp": "2014-08-18 12:20:00" } ] } ], "site_id": 14, "site_name": "21 cradock avenue" } ], "region_name": "rosebank", "region_id": 3 }, { "sites": [ { "assets": [ { "asset_id": 44, "asset_name": "dions kitchen", "alarm_cnt": 0, "active_component_cnt": 1, "components": [ { "latest_reading": "19.1°c", "component_id": 291, "alarm_cnt": 0, "component_type": "analogue - input", "component_name": "ambient (ice3)", "latest_reading_tstamp": "2014-10-22 21:51:00" } ] }, { "asset_id": 31, "asset_name": "vaccine fridge", "alarm_cnt": 0, "active_component_cnt": 6, "components": [ { "latest_reading": "30.3°c", "component_id": 87, "alarm_cnt": 0, "component_type": "analogue - input", "component_name": "a1:(fridge) ambient temperature (bc540)", "latest_reading_tstamp": "2014-10-30 14:20:00" }, { "latest_reading": "28.9°c", "component_id": 88, "alarm_cnt": 0, "component_type": "analogue - input", "component_name": "a2:fridge temp (bc540)", "latest_reading_tstamp": "2014-10-30 14:20:00" }, { "latest_reading": "29.7°c", "component_id": 89, "alarm_cnt": 0, "component_type": "analogue - input", "component_name": "a3:fridge (bc540)", "latest_reading_tstamp": "2014-10-30 14:20:00" }, { "latest_reading": "6.6°c", "component_id": 21, "alarm_cnt": 0, "component_type": "analogue - input", "component_name": "ice3 - a1 fridge section", "latest_reading_tstamp": "2014-10-22 21:51:00" }, { "latest_reading": "-14.9°c", "component_id": 22, "alarm_cnt": 0, "component_type": "analogue - input", "component_name": "ice3 - a2 freezer section", "latest_reading_tstamp": "2014-10-22 21:51:00" }, { "latest_reading": "", "component_id": 25, "alarm_cnt": 0, "component_type": "digital - input", "component_name": "mains power", "latest_reading_tstamp": "2014-10-30 14:20:00" } ] } ], "site_id": 2, "site_name": "37 wandel ave" } ], "region_name": "sandton", "region_id": 2 } ] } } }

i have created these classes using json2csharp:

public class response { public string hash { get; set; } public string resp_code { get; set; } public int code { get; set; } } public class component { public string latest_reading { get; set; } public int component_id { get; set; } public int alarm_cnt { get; set; } public string component_type { get; set; } public string component_name { get; set; } public string latest_reading_tstamp { get; set; } public bool? sensor_error { get; set; } } public class asset { public int asset_id { get; set; } public string asset_name { get; set; } public int alarm_cnt { get; set; } public int active_component_cnt { get; set; } public list<component> components { get; set; } } public class site { public list<asset> assets { get; set; } public int site_id { get; set; } public string site_name { get; set; } } public class part { public list<site> sites { get; set; } public string region_name { get; set; } public int region_id { get; set; } } public class company { public int company_id { get; set; } public string company_name { get; set; } public int alarm_cnt { get; set; } public list<region> regions { get; set; } } public class construction { public company company { get; set; } } public class rootobject { public response response { get; set; } public construction structure { get; set; } }

here i've done far

var client = new restclient() { baseurl = url }; var request = new restrequest() { resource = "", method = method.get, requestformat = dataformat.json }; request.onbeforedeserialization = resp => { resp.contenttype = "application/json"; }; client.executeasync(request, (response, handle) => { restsharp.deserializers.jsondeserializer deserial = new restsharp.deserializers.jsondeserializer(); var resp = deserial.deserialize<list<rootobject>>(response); var jsonobj = deserial.deserialize<dictionary<string, string>>(response); string construction = jsonobj["structure"].tostring(); }

that gives me info under "structure"

i need regionnames listed list boxes; need list of sites under each region; need assets under each site listed well, according precious selected field.

my problem using data. utilize restsharp client. have grouping info accordingly: regions, sites, assets. sites must grouped under part belong to; assets must grouped under sites belong well. know how can this? help appreciated.

json means javascript object notation.

to deserialize, should create c# object looks json object (same property names, sane info types).

then can deserialize object with

new javascriptserializer().deserialize<myjsonobjecttype>(jsonstring);

for instance, json string

{success:true,data:[{id:1,name:'sam'},{id:2,name:'jim'}]}

could deserialized object

public class myjsonobjecttype { public bool success; public list<mysubobj> data; } public class mysubobj { public int id; public string name; }

c# json restsharp arrays

No comments:

Post a Comment