paip.C#.NET JSON解析总结

paip.C#.NET JSON解析总结

作者Attilax ,  EMAIL:1466519819@qq.com 


近日做跑号器,需要解析JSON
{"code":799,"data":{"backUrl":""},"message":"\u767b\u9646\u6210\u529f"}




查了下资料,有原生API可解析,可惜要3.0以上,,为了兼容性,我的程序是2.0的..
只好用类库Newtonsoft.Json.dll..


去官网下载2.0的.但是它实际上引用的.NET版是3.5的..因为用到了LINQ.. 将其源码下载下来,把LINQ全替换掉,编译时,需要SYSTEM.CORE.DLL..而这个DLL也是3.5的..没办法..


只好下载1.3.1的...




调用的时候.
   //     JObject jo = JObject.Parse(jsonText);


            JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
       //     string zone = jo["code"] .ToString();


这两句都出错,找不到类..实际上这两个语法应该是Newtonsoft.Json.dll 2.0的写法吧,不适合1.3.1








只好用其JsonReader来读了,这个类比较底层些.顺利读出属性值 .


完整解析:
================


  while (reader.Read())
         {
             //  zone += "TokenType = " + reader.TokenType + "   ValueType =  " + reader.ValueType + "   Value = " + reader.Value + "\r\n";
     }




TokenType = StartObject   ValueType =     Value = 
TokenType = PropertyName   ValueType =  System.String   Value = code
TokenType = Integer   ValueType =  System.Int64   Value = 799
TokenType = PropertyName   ValueType =  System.String   Value = data
TokenType = StartObject   ValueType =     Value = 
TokenType = PropertyName   ValueType =  System.String   Value = backUrl
TokenType = String   ValueType =  System.String   Value = 
TokenType = EndObject   ValueType =     Value = 
TokenType = PropertyName   ValueType =  System.String   Value = message
TokenType = String   ValueType =  System.String   Value = 767b96466210529f
TokenType = EndObject   ValueType =     Value = 






自定义封装:
----------------------
上面的代码太底层,所以需要封装一下,以便使用,.此外..比如需要读取CODE这个属性值就可以了..


     String zone = jsonC41.getProperty("code", jsonText);




  public static string getProperty(string PropertyName, String jsonText)
     {
         JsonReader reader = new JsonReader(new StringReader(jsonText));


         string zone = "";
         bool getProperName = false;
         while (reader.Read())
         {
             //  zone += "TokenType = " + reader.TokenType + "   ValueType =  " + reader.ValueType + "   Value = " + reader.Value + "\r\n";
             if (getProperName)
             {
                 zone = reader.Value.ToString().Trim();


                 break;
             }


             if (reader.TokenType.ToString().Equals("PropertyName"))
             if (reader.Value != null)
                 if (reader.Value.Equals(PropertyName))
                     getProperName = true;
         }
         return zone;
     }










参考:
C#解析json文件的方法 - 方倍 - 博客园.htm
Newtonsoft.Json.dll使用 - 东名夜雨 的专栏 - 博客频道 - CSDN.NET.htm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络编程资源

高性能 Socket 组件 HP-Socket v3.2.1-RC1 发布 http://bbs.csdn.net/topics/390763397 The C10K problem 高性能服务器设计 http://www.cnblogs.com/fll/archive/2008/05/17/1201540.html http://blog.sina.com.cn/s/blog_4aec22920100itkf.html 这周看了Dan Kegel那篇"…

计算机试题dddd,数据库系统概论试题及答案dddd_Image_Marked.pdf

数据库系统概论试题及答案dddd_Image_Marked数据库系统概论复习资料:第一章:一选择题:1.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。在这几个阶段中,数据独立性最高的…

Android之AudioManager(音频管理器)详解

AudioManager简介: AudioManager类提供了访问音量和振铃器mode控制。使用Context.getSystemService(Context.AUDIO_SERVICE)来得到这个类的一个实例。 公有方法: Public Methods int abandonAudioFocus(AudioManager.OnAudioFo…

Asp.NetCore3.1开源项目升级为.Net6.0

概述自从.Net6.0出来后,一直想之前开发的项目升级.Net6.0,有时想想毕竟中间还跨了个5.0版本,升级起来不知道坑大不大,最近抽时间对升级的方案做了些研究,然后将代码升级为.Net6.0。本质上来说我个人不太喜欢.Net6.0去掉…

ios开发备忘录三

为什么80%的码农都做不了架构师&#xff1f;>>> 在配置第三方库EGORefreshTableHeaderView的时候&#xff08;其实就只是一个头文件和一个源文件&#xff0c;还算不上库&#xff09;&#xff0c;可以从头文件发现 #import <QuartzCore/QuartzCore.h> 所以必…

Android之Eclipse下面如何看Android源代码

在看代码的时候,会经常用到 ctrl鼠标左键 去看自己写的类,有时候点到java的类或者android的类就无法打开,显示no class found之类的东西, 1.拿Button举例,ctrl加鼠标左键,然后显示了no class found之后,这时候会发现整个页面只有一个按钮可以点击,就是change attach source,如果…

项目管理 计算机仿真,分析计算机仿真技术在工程项目施工管理中的运用.pdf

第 33 卷 第 1 期(上) 赤 峰 学 院 学 报( 自 然 科 学 版 ) Vol. 33 No.12017 年 1 月 Journal of Chifeng University (Natural Science Edition) Jan. 2017分析计算机仿真技术在工程项目施工管理中的运用林振文(厦 门软件职业技 术学院 &#xff0c; 福 建 厦 门 361024 )摘…

C# 企业微信消息推送对接,实现天气预报推送

准备工作需要获取的东西1. 企业Id,2.应用secret 和 应用ID获取企业id注册完成后&#xff0c;在我的企业》企业信息》最下面企业id获取应用secret 和 应用ID发送微信消息class WeCom{public static string weComCId "ww2b b0bf8";//企业Id①public static string we…

通信协议——HTTP、TCP、UDP

TCP HTTP UDP:都是通信协议&#xff0c;也就是通信时所遵守的规则&#xff0c;只有双方按照这个规则“说话”&#xff0c;对方才能理解或为之服务。TCP HTTP UDP三者的关系:TCP/IP是个协议组&#xff0c;可分为四个层次&#xff1a;网络接口层、网络层、传输层和应用层…

++i 与 i++

i 与 i都能实现自增,它们的区别在哪? i:先自增,然后返回引用. i:先进行一个本地备份(可以理解为定义一个临时变量),自增,然后返回临时变量的引用. 理论上来讲,i操作会快于i,但由于现代编译器做了优化.所以,i与i在性能上的并无差别.转载于:https://www.cnblogs.com/heavenyes/p…

Visual Studio 远程调试正在运行的进程

使用场景当项目在测试环境上有bug&#xff0c;需要运行代码调试一下&#xff0c;这时就需要在测试环境上安装一个调试工具&#xff0c;然后在本地运行代码&#xff0c;远程链接到测试环境服务器来调试代码&#xff1b;&#xff08;假期鸽了这末长的时间&#xff09;方式一&…

直男约会能有多奇葩​?

1 六根烟来了七位领导怎么办&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 和36号鞋垫一样大的毛肚&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 直男约会能有多奇葩&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 高情商v…

Android之如何解决adb server is out of date,killing...ADB server didn't ACK

今天&#xff0c;久未出现的著名的“adb server is out of date. killing”又发生了&#xff0c;在此&#xff0c;将解决方法记下&#xff0c;以便日后查看。 1. 错误信息&#xff1a; C:\Users\lizy>adb devices adb devicesadb server is out of date. killing... ADB …

计算机如何实现共享接入,局域网内电脑实现共享设置方法

不同局域网内电脑怎么实现互访实现文件或打印机共享设置?下面由学习啦小编给你做出详细的实现共享设置方法介绍!希望对你有帮助!局域网内电脑实现共享设置方法&#xff1a;一、使用一条网线将两个路由器连接&#xff0c;网线插在路由器的LAN口上;二、两个路由器要设置两个不同…

python的内建函数详解

python内建函数最近一直在学习python&#xff0c;在网上看到和学习了关于python内建函数的一些分类和个内建函数的作用&#xff0c;下面是一些关于python内建函数的罗列&#xff0c;初学者的了解&#xff0c;分类可能不准确&#xff0c;一起交流。一、数学运算类abs(x)求绝对值…

【另类见解】一致性哈希就能解决分库分表问题了?

“开局一问&#xff1a;分库分表行为中&#xff0c;一致性哈希到底用处大不大&#xff1f;装B脑图现在是大数据的时代&#xff0c;其中一个体现就是数据量非常庞大。当然大数据的概念绝非是数据量就可以定义的&#xff0c;我自己给大数据下的定义是&#xff1a;无处不在的大量数…

DNS resolving 占用大量日志

公司内部DNS配置好后&#xff0c;测试解析正常&#xff0c;只是几乎每秒都有无法解析的日志产生。但分析日志时发现&#xff0c;每天的日志都有2G左右。日志中几乎全是类似network unreachable resolving www.baidu.com/A/IN:2001:5023:c27::2:30#53network unreachable resolv…

SQL Server 2008之DMF

陈述式管理架构&#xff0c;一个用于SQL Server数据库引擎的新的基于策略的管理框架 DMF是一个基于政策的用于管理一个或多个SQL Server 2008实例的系统。要使用DMF&#xff0c;SQL Server政策管理员使用SQL Server 管理套件创建政策&#xff0c;这些政策管理服务器上的实体&am…