我有一个如下的json字符串
string json = "{\"Method\":\"LOGIN\",\"Skill\":{\"1\":\"SKILL-1\",\"2\":\"SKILL-2\"}}";我正在使用JavaScriptSerializer来解析json
System.Web.Script.Serialization.JavaScriptSerializer oSerializer =
new System.Web.Script.Serialization.JavaScriptSerializer();
var dict = oSerializer.Deserialize<Dictionary<string,object>>(json);我使用以下代码行获取Method = LOGIN
MessageBox.Show("Method = "+dict["Method"].ToString());而是如何在循环中获得技能。喜欢
技能
1 = SKILL-1
2 = SKILL-2发布于 2015-02-17 20:43:20
你应该声明你自己的类:
public class YourClassName
{
public string Method { get; set; }
public Dictionary<int, string> Skill { get; set; }
}并像这样反序列化Json字符串:
var obj = oSerializer.Deserialize<YourClassName>(json);发布于 2015-02-17 20:43:21
映射到Skill键的值实际上是另一个Dictionary<string, object>。您可以通过将object类型转换为
string json = "{\"Method\":\"LOGIN\",\"Skill\":{\"1\":\"SKILL-1\",\"2\":\"SKILL-2\"}}";
var oSerializer = new JavaScriptSerializer();
var dict = oSerializer.Deserialize<Dictionary<string,object>>(json);
var innerDict = dict["Skill"] as Dictionary<string, object>;
if (innerDict != null)
{
foreach (var kvp in innerDict)
{
Console.WriteLine ("{0} = {1}", kvp.Key, kvp.Value);
}
}或者,另一种方法是将对象映射到适当的class并反序列化到它,而不是通用的Dictionary<string, object>。
发布于 2015-02-17 20:43:56
假设你有如下的类
public class Data
{
public string Method { get; set; }
public Skills Skill { get; set; }
// If you don't want to use Skills class then you can use this
//public Dictionary<int, string> Skills { get; set; }
}
public class Skills
{
public int Id { get; set; }
public string Skill { get; set; }
}因此您可以将json反序列化为Data对象,如下所示
Data deserializedData = JsonConvert.DeserializeObject<Data>(json);https://stackoverflow.com/questions/28561674
复制相似问题