当前位置: 首页 > news >正文

json.net处理复杂json

-------------JSON字符串---------
{"id":"-1","result":{"relations":[{"ptId":"713990455","game":"风云","gameid":"50","worldid":"1.1","nickname":"贵族≮蓝皓
≯","gender":"0","relation":"1"},{"ptId":"714626904","game":"风云","gameid":"50","worldid":"1.1","nickname":"刘凡
吻","gender":"0","relation":"1"},{"ptId":"719696772","game":"风云","gameid":"50","worldid":"1.1","nickname":"贵族≮杀神
≯","gender":"0","relation":"1"},{"ptId":"713969267","game":"风云","gameid":"50","worldid":"1.1","nickname":"吉米
仔","gender":"0","relation":"1"},{"ptId":"714286741","game":"风云","gameid":"50","worldid":"1.1","nickname":"指定天
下","gender":"0","relation":"1"},{"ptId":"714905671","game":"风云","gameid":"50","worldid":"1.1","nickname":"冰玉※雅
儿","gender":"1","relation":"1"},{"ptId":"719695948","game":"风云","gameid":"50","worldid":"1.1","nickname":"ξψ妹妹
δοο","gender":"1","relation":"1"},{"ptId":"714884563","game":"风云","gameid":"50","worldid":"1.1","nickname":"药王苗子的老
婆","gender":"0","relation":"1"},{"ptId":"714726500","game":"风云","gameid":"50","worldid":"1.1","nickname":"贵族≮Kiss
≯","gender":"0","relation":"32"},{"ptId":"866101129","game":"风云","gameid":"50","worldid":"1.1","nickname":"聂
风","gender":"0","relation":"32"}],"friendCount":"104"}}
 
这个json字符串可以分为三个类的组合,最外层我命名为results,中间的命名为relationsInfo,最内的命名为Relations,只要明白以上关系就好办了
以下为类定义
 
----------自定义类---------
[DataContract(Name = "results")]
    public class results
    {
        [DataMember(Name = "id")]
        public string id{get ;set ; }
 
        [DataMember(Name = "result")]
        public relationsInfo result{get ;  set ;}
    }
 
      [DataContract]
    public class relationsInfo
    {
        [DataMember(Name = "relations")]
        public Relations[] relations{get; set;}
 
        [DataMember(Name = "friendCount")]
        public string friendCount{get;set;}
    }
 
     [DataContract]
    public class Relations
    {
        private string _gender;
       
        [DataMember(Name = "ptId")]
        public string ptId{ get;set;}
 
        [DataMember(Name = "game")]
        public string game{get;set;}
 
        [DataMember(Name = "gameid")]
        public string gameid {get; set;}
 
        [DataMember(Name = "worldid")]
        public string worldid{ get;set;}
 
        [DataMember(Name = "nickname")]
        public string nickname{  get;set;}
 
        [DataMember(Name = "gender")]
        public string gender
        {
            get {
                if (_gender == "0")
                {
                    return "男";
                }
                else
                {
                    return "女";
                }
            }
            set {
                this._gender = value;
            }
        }
 
        [DataMember(Name = "relation")]
        public string relation{get;set ;}
    }
---------------转换方法-----------
 string sRelativeUsersJson; //json来源;
 JsonQueryStringConverter convert = new JsonQueryStringConverter();
 results relations = new results();
 relations = (results)convert.ConvertStringToValue(sRelativeUsersJson, relations.GetType());
//或
DataContractJsonSerializer jsr = new DataContractJsonSerializer(typeof(relationsInfo));
System.IO.MemoryStream ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(sRelativeUsersJson));
relationsInfo relations = (relationsInfo)jsr.ReadObject(ms);
 

相关文章:

  • 各种***批处理
  • 链表 UVA 11988 Broken Keyboard (a.k.a. Beiju Text)
  • 综合力矩分解算法
  • cocos2dx3.2升级Android5的坑
  • 进程与线程的区别
  • ubuntu14.04 qq安装
  • LDAP Account Manager 4.0 发布
  • [python]tkinker的GUI应用执行耗时长的任务
  • 与走在创业路上的学子交流——记网维“海大快点”创业团队
  • 以一个小例子作为自学XML的成果
  • 第七章 ReentrantLock总结
  • 托管执行和公共语言基础结构
  • iOS 8 自适应 Cell
  • 云计算:大数据时代的系统工程(二)
  • JS组件系列——封装自己的JS组件,你也可以
  • const let
  • Effective Java 笔记(一)
  • Mysql数据库的条件查询语句
  • PHP 小技巧
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Spring-boot 启动时碰到的错误
  • SSH 免密登录
  • sublime配置文件
  • Windows Containers 大冒险: 容器网络
  • Zsh 开发指南(第十四篇 文件读写)
  • 编写高质量JavaScript代码之并发
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 基于组件的设计工作流与界面抽象
  • 盘点那些不知名却常用的 Git 操作
  • 如何在GitHub上创建个人博客
  • 问题之ssh中Host key verification failed的解决
  • 终端用户监控:真实用户监控还是模拟监控?
  • ​linux启动进程的方式
  • #每日一题合集#牛客JZ23-JZ33
  • (1)(1.13) SiK无线电高级配置(五)
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (十三)Maven插件解析运行机制
  • (万字长文)Spring的核心知识尽揽其中
  • (一)WLAN定义和基本架构转
  • (一)插入排序
  • (转)EOS中账户、钱包和密钥的关系
  • .Net的DataSet直接与SQL2005交互
  • .NET企业级应用架构设计系列之技术选型
  • :“Failed to access IIS metabase”解决方法
  • @Repository 注解
  • @RunWith注解作用
  • []T 还是 []*T, 这是一个问题
  • [20140403]查询是否产生日志
  • [Android 13]Input系列--获取触摸窗口
  • [C/C++随笔] char与unsigned char区别
  • [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入HBASE