One option is to use a DataContractJsonSerializer instead of a JavascriptSerializer.
If you declare your classes as follows:
[DataContract]
private class DeserializationMain
{
[DataMember(Name = "result")]
public string result;
[DataMember(Name = "arguments")]
public args arguments;
[DataContract]
public class args
{
[DataMember(Name = "activeTorrentCount")]
public int activeTorrentCount;
[DataMember(Name = "cumulative-stats")]
public current cumulative_stats;
[DataContract]
public class current
{
[DataMember(Name = "downloadedBytes")]
public long downloadedBytes;
}
}
}
You can deserialize it as follows:
string json = "{\"result\":\"success\" , \"arguments\": { \"activeTorrentCount\":22, \"cumulative-stats\": { \"downloadedBytes\":1111 } } }";
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DeserializationMain));
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json));
DeserializationMain result = serializer.ReadObject(ms) as DeserializationMain;
Console.WriteLine("Cumulative-stats.downloadedBytes: "+result.arguments.cumulative_stats.downloadedBytes);
Will produce:
Cumulative-stats.downloadedBytes: 1111
source
share