Reputation: 1519
I have a JSON which I get from web application. I try this parse to Object using System.Web.Script.Serialization . But I have problem with parse
const String jsonWeb = @"{
""error"" : 0,
""result"" : {
""data"" : {
""1722278"" : {
""din"" : ""741338;361490;648450;934096;180467;209928;805500;283840;901917;110193;9438;363965;700670;647965;18399;31993;714755;242839;60436;600310;"",
""pid"" : ""11""
},
""1752279"" : {
""din"" : ""970510;771034;372305;286336;926373;459655;1409;140138;692017;311733;686476;368178;735954;635501;816346;821514;768444;510380;959990;916515;"",
""pid"" : ""11""
},
""1752280"" : {
""din"" : ""992662;474351;139725;998728;475954;706331;798728;744204;999194;22546;177003;4098;448658;842154;431042;970297;989184;362126;7720;720781;"",
""pid"" : ""11""
}
},
""pid"" : {
""11"" : {
""codejs"" : "" very \""long\"" String "",
""max"" : ""3""
}
},
""sys"" : {
""11"" : {
""1"" : {
""b"" : ""Firefox"",
""s"" : ""Windows""
},
""2"" : {
""b"" : ""Chrome"",
""s"" : ""Windows""
}
}
},
""maxgetlimit"" : 10001,
""setProxy"" : [],
""cidget"" : {
""111102"" : 1
},
""openBrowser"" : 1
}}";
I try parse this using this code but i get error. I try use this:
public class Pack
{
public string din { get; set; }
public string pid { get; set; }
}
public class MySybObject
{
public Pack attributes { get; set; }
}
public class Result
{
public Result() { data = new List<MySybObject>(); }
public List<MySybObject> data { get; set; }
}
public class Code
{
public String codejs { get; set; }
public String max { get; set; }
}
public class MySubPid
{
public Code code { get; set; }
}
public class SystemReq
{
public String b { get; set; }
public String s { get; set; }
}
public class Sys
{
public SystemReq sysreq { get; set; }
}
public class Cidget
{
public String cidget { get; set; }
}
public class Response
{
public Response() {}
public string error { get; set; }
public Result results { get; set; }
public MySubPid pid { get; set; }
public Sys sys { get; set; }
public Int32 maxgetlimit { get; set; }
public String setProxy { get; set; }
public Cidget cidget { get; set; }
public String openBrowser { get; set; }
}
JavaScriptSerializer ser = new JavaScriptSerializer();
Response foo = ser.Deserialize<Response>(jsonWeb);
But I get Error and I probably lost a number of object in data - this is important data for me.
Upvotes: 1
Views: 3409
Reputation: 116168
Since there are numbers used as keys
in your json string, it would be better to use dynamic objects in this case instead of deserializing to a class (I used Json.Net for this)
dynamic jsonObj = JsonConvert.DeserializeObject(jsonWeb);
Console.WriteLine(jsonObj.result.data["1722278"].pid);
Console.WriteLine(jsonObj.result.sys["11"]["1"].b);
BTW: this line is wrong
""codejs"" : "" very ""long"" String ""
It should be something like this
""codejs"" : "" very \""long\"" String "",
--EDIT--
foreach (var child in jsonObj.result.data.Children())
{
Console.WriteLine(child.Name + "=> " + child.Value.din);
}
Upvotes: 2
Reputation: 14929
Have a try of JSON class generator to generate your classes, then try it again.
Update: I had to change the JSON string in order to generate it;
{
"error" : 0,
"result" : {
"data" : {
"1722278" : {
"din" : "741338;361490;648450;934096;180467;209928;805500;283840;901917;110193;9438;363965;700670;647965;18399;31993;714755;242839;60436;600310;",
"pid" : "11"
},
"1752279" : {
"din" : "970510;771034;372305;286336;926373;459655;1409;140138;692017;311733;686476;368178;735954;635501;816346;821514;768444;510380;959990;916515;",
"pid" : "11"
},
"1752280" : {
"din" : "992662;474351;139725;998728;475954;706331;798728;744204;999194;22546;177003;4098;448658;842154;431042;970297;989184;362126;7720;720781;",
"pid" : "11"
}
},
"pid" : {
"11" : {
"codejs" : "very long String ",
"max" : "3"
}
},
"sys" : {
"11" : {
"1" : {
"b" : "Firefox",
"s" : "Windows"
},
"2" : {
"b" : "Chrome",
"s" : "Windows"
}
}
},
"maxgetlimit" : 10001,
"setProxy" : [],
"cidget" : {
"111102" : 1
},
"openBrowser" : 1
}}
Upvotes: 0