求大佬指点如何解析QQ好友json数据

qq_33913765 2017-06-22 11:21:00
数据:

{
"ec": 0,
"result": {
"1": {
"gname": "第一个好友分组",
"mems": [
{
"name": "好友名称",
"uin": 10001
},
{
"name": "好友名称",
"uin": 10002
}
]
},
"2": {
"gname": "好友分组2"
},
"3": {
"gname": "好友分组3",
"mems": [
{
"name": "好友名称",
"uin": 10003
},
{
"name": "好友名称",
"uin": 10004
}
]
}
}
}

希望大佬能说一下思路和提供一下解决方法参考
...全文
627 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_33913765 2017-07-05
  • 打赏
  • 举报
回复
引用 14 楼 hanjun0612 的回复:
刚想起来,还有个方法 使用JsonProperty重命名就可以了 [JsonProperty("1")] public _1 _1 { get; set; }
public class Rootobject
    {
        public int ec { get; set; }
        public Result result { get; set; }
    }

    public class Result
    {
        [JsonProperty("1")]
        public _1 _1 { get; set; }
        [JsonProperty("2")]
        public _2 _2 { get; set; }
        [JsonProperty("3")]
        public _3 _3 { get; set; }
    }


    public class _1
    {
        public string gname { get; set; }
        public Mem[] mems { get; set; }
    }

    public class Mem
    {
        public string name { get; set; }
        public int uin { get; set; }
    }

    public class _2
    {
        public string gname { get; set; }
    }

    public class _3
    {
        public string gname { get; set; }
        public Mem1[] mems { get; set; }
    }

    public class Mem1
    {
        public string name { get; set; }
        public int uin { get; set; }
    }
dalao问一下_1_2_3类里面的属性都一样,那能否用集合或数组装起来,处理更方便。
qq_33913765 2017-07-05
  • 打赏
  • 举报
回复
引用 14 楼 hanjun0612 的回复:
刚想起来,还有个方法 使用JsonProperty重命名就可以了 [JsonProperty("1")] public _1 _1 { get; set; }
public class Rootobject
    {
        public int ec { get; set; }
        public Result result { get; set; }
    }

    public class Result
    {
        [JsonProperty("1")]
        public _1 _1 { get; set; }
        [JsonProperty("2")]
        public _2 _2 { get; set; }
        [JsonProperty("3")]
        public _3 _3 { get; set; }
    }


    public class _1
    {
        public string gname { get; set; }
        public Mem[] mems { get; set; }
    }

    public class Mem
    {
        public string name { get; set; }
        public int uin { get; set; }
    }

    public class _2
    {
        public string gname { get; set; }
    }

    public class _3
    {
        public string gname { get; set; }
        public Mem1[] mems { get; set; }
    }

    public class Mem1
    {
        public string name { get; set; }
        public int uin { get; set; }
    }
感谢大佬,我试试
qq_33913765 2017-07-05
  • 打赏
  • 举报
回复
引用 13 楼 hanjun0612 的回复:
[quote=引用 12 楼 qq_33913765 的回复:] 感谢大佬
根据你给我的信息,我看了下,反序列化失败,是因为你Json中 使用了数字 例如 1:“值” 在C#中 数字不能作为类名,所以通过工具生成的类是 class _1 这样的,所以反序列化不到。 你问问传递给你json的人,能否修改这个json中的1,2,3[/quote] 这个json是QQ好友的数据,从QQ群空间获取到的,按照dalao的说法我改成了字母,果然拿到了数据..但是换一个QQ的话再获取就必须重新修改代码编译感觉比较麻烦。。
正怒月神 2017-07-05
  • 打赏
  • 举报
回复
刚想起来,还有个方法 使用JsonProperty重命名就可以了 [JsonProperty("1")] public _1 _1 { get; set; }
public class Rootobject
    {
        public int ec { get; set; }
        public Result result { get; set; }
    }

    public class Result
    {
        [JsonProperty("1")]
        public _1 _1 { get; set; }
        [JsonProperty("2")]
        public _2 _2 { get; set; }
        [JsonProperty("3")]
        public _3 _3 { get; set; }
    }


    public class _1
    {
        public string gname { get; set; }
        public Mem[] mems { get; set; }
    }

    public class Mem
    {
        public string name { get; set; }
        public int uin { get; set; }
    }

    public class _2
    {
        public string gname { get; set; }
    }

    public class _3
    {
        public string gname { get; set; }
        public Mem1[] mems { get; set; }
    }

    public class Mem1
    {
        public string name { get; set; }
        public int uin { get; set; }
    }
正怒月神 2017-07-05
  • 打赏
  • 举报
回复
引用 12 楼 qq_33913765 的回复:
感谢大佬
根据你给我的信息,我看了下,反序列化失败,是因为你Json中 使用了数字 例如 1:“值” 在C#中 数字不能作为类名,所以通过工具生成的类是 class _1 这样的,所以反序列化不到。 你问问传递给你json的人,能否修改这个json中的1,2,3
qq_33913765 2017-07-05
  • 打赏
  • 举报
回复
引用 11 楼 hanjun0612 的回复:
[quote=引用 10 楼 closurer 的回复:] 还有这种黑科技?学习了。
不然怎么说是世上最好的IDE呢,啊哈哈 [/quote] 感谢大佬
正怒月神 2017-06-30
  • 打赏
  • 举报
回复
引用 8 楼 u012391923 的回复:
VS居然有内置自动生成json实体类的功能,666,又学到了。
vs是世界上最好的IDE
u012391923 2017-06-30
  • 打赏
  • 举报
回复
引用 7 楼 hanjun0612 的回复:
反序列化json已经是个烂大街的事了。 通过nuget下载json.net。 赋值你的json,到vs--编辑--选择性黏贴--将json转换为类 然后就出现了对应的实体类。 最后通过json.net反序列化
VS居然有内置自动生成json实体类的功能,666,又学到了。
正怒月神 2017-06-30
  • 打赏
  • 举报
回复
反序列化json已经是个烂大街的事了。 通过nuget下载json.net。 赋值你的json,到vs--编辑--选择性黏贴--将json转换为类 然后就出现了对应的实体类。 最后通过json.net反序列化
xdashewan 2017-06-30
  • 打赏
  • 举报
回复
搜索c#反序列化json
u012391923 2017-06-30
  • 打赏
  • 举报
回复
1.安装newtonsoft.json. 2.根据json数据格式定义相应的类。 3.使用object obj = JsonConvert.SerialObject<OjbectType>(string jsonData)直接解析对象。 4.obj就是你要的解析数据。
OneCoderr 2017-06-30
  • 打赏
  • 举报
回复
MARK MARK
正怒月神 2017-06-30
  • 打赏
  • 举报
回复
引用 10 楼 closurer 的回复:
还有这种黑科技?学习了。

不然怎么说是世上最好的IDE呢,啊哈哈
闭包客 2017-06-30
  • 打赏
  • 举报
回复
引用 7 楼 hanjun0612 的回复:
反序列化json已经是个烂大街的事了。 通过nuget下载json.net。 赋值你的json,到vs--编辑--选择性黏贴--将json转换为类 然后就出现了对应的实体类。 最后通过json.net反序列化
还有这种黑科技?学习了。
qq_33913765 2017-06-30
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
http://www.cnblogs.com/ambar/archive/2010/07/13/parse-json-via-csharp.html
大佬能给个解决方案参考一下吗

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧