首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# -如何解析json

C# -如何解析json
EN

Stack Overflow用户
提问于 2015-02-17 20:37:05
回答 3查看 278关注 0票数 0

我有一个如下的json字符串

代码语言:javascript
复制
string json = "{\"Method\":\"LOGIN\",\"Skill\":{\"1\":\"SKILL-1\",\"2\":\"SKILL-2\"}}";

我正在使用JavaScriptSerializer来解析json

代码语言:javascript
复制
System.Web.Script.Serialization.JavaScriptSerializer oSerializer = 
                               new System.Web.Script.Serialization.JavaScriptSerializer();
var dict = oSerializer.Deserialize<Dictionary<string,object>>(json);

我使用以下代码行获取Method = LOGIN

代码语言:javascript
复制
MessageBox.Show("Method = "+dict["Method"].ToString());

而是如何在循环中获得技能。喜欢

技能

代码语言:javascript
复制
1 = SKILL-1
2 = SKILL-2
EN

回答 3

Stack Overflow用户

发布于 2015-02-17 20:43:20

你应该声明你自己的类:

代码语言:javascript
复制
public class YourClassName
{
    public string Method { get; set; }
    public Dictionary<int, string> Skill { get; set; }
}

并像这样反序列化Json字符串:

代码语言:javascript
复制
var obj = oSerializer.Deserialize<YourClassName>(json);
票数 1
EN

Stack Overflow用户

发布于 2015-02-17 20:43:21

映射到Skill键的值实际上是另一个Dictionary<string, object>。您可以通过将object类型转换为

代码语言:javascript
复制
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>

票数 1
EN

Stack Overflow用户

发布于 2015-02-17 20:43:56

假设你有如下的类

代码语言:javascript
复制
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对象,如下所示

代码语言:javascript
复制
Data deserializedData = JsonConvert.DeserializeObject<Data>(json);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28561674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档