c# jason解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# jason解析相关的知识,希望对你有一定的参考价值。


"level2": [
13,
14,
15
]


编程渣渣已经被这个问题困扰好久了,求大神知道。。。。。
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
已经引入这两个库了,不知道接下来应该怎么写,网上找了好久也没有找到。如果不用这个两个库的话只要能解析出来就行。

public sealed class SerializeHelper
    
        public static T NewtonJsonDeserialize<T>(string jsonStr)
        
            try
            
                StringWriter sw = new StringWriter(System.Globalization.CultureInfo.InvariantCulture);
                Newtonsoft.Json.JsonSerializer json = new Newtonsoft.Json.JsonSerializer();
                using (Newtonsoft.Json.JsonReader jr = new Newtonsoft.Json.JsonTextReader(new StringReader(jsonStr)))
                
                    return (T)json.Deserialize<T>(jr);
                
            
            catch
            
                return default(T);
            
        
         //系统自带的js反序列化
        public static T JsDeserialize<T>(string jsonStr)
        
            try
            
                System.Web.Script.Serialization.javascriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
                return (T)jss.Deserialize<T>(jsonStr);
            
            catch
            
                return default(T);
            
        
    
    
  //用法:要先定义序列化的类,如:
  public class MyClass
        
            public List<int> Level2;
        
         MyClass o1 = SerializeHelper.NewtonJsonDeserialize<MyClass>(jsonStr);
         MyClass o2 = SerializeHelper.JsDeserialize<MyClass>(jsonStr);

参考技术A 采用正则,一层层转换数组 参考技术B 可以使用 ServiceStack.Text 百度或谷歌搜索一下,如果下不到可以问我要地址

Android中 GsonFormat插件解析Jason 数据+和风天气接口解析案例

首先 转载自http://www.cnblogs.com/androidsuperman/p/4579249.html     感谢 @西北野狼  同学。

第一部分: GsonFormat 插件基本使用方法

很久以前写json解析用原始的解析json的方法,后来为了加快开发进度,开始使用gson,fastjson等第三方jar包来进行json解析,为了保持apk足够小,不因为引入jar包导致apk文件过大,选择使用gson来加速json解析,当然,去年androidstudio 1.0版本出来,很多人开始使用androidstudio,当然studio有很多方便开发的插件加速应用的开发,减少开发者的劳动力。

 
今天推荐个工具就是:gsonformat
 
下载地址:
 
用过后表示,怎么这么酸爽的呢,哈哈
安装流程:
Setting-->plugins-->
技术分享
 
使用:
自定义个javaBean(无任何内容,就一个空的类)
首先复制你要解析的json
然后alt+insert弹出如下界面
技术分享
 
粘贴到如下界面:
 
技术分享
 
点击ok,自动生成对应javaBean的语句:
技术分享
然后就是根据json来进行json to bean的转换了
提供两工具类:
  1. 技术分享
     1 import java.util.List;
     2 /**
     3  * TODO: json工具类
     4  * 
     5  * @author soyoungboy
     6  * @date 2014-11-8 下午2:32:24
     7  */
     8 public abstract class Json {
     9     private static Json json;
    10     Json() {
    11     }
    12     public static Json get() {
    13         if (json == null) {
    14             json = new GsonImpl();
    15         }
    16         return json;
    17     }
    18     public abstract String toJson(Object src);
    19     public abstract <T> T toObject(String json, Class<T> claxx);
    20     public abstract <T> T toObject(byte[] bytes, Class<T> claxx);
    21     public abstract <T> List<T> toList(String json, Class<T> claxx);
    22 }
    技术分享
    技术分享
     1 public class GsonImpl extends Json {
     2     private Gson gson = new Gson();
     3     @Override
     4     public String toJson(Object src) {
     5         return gson.toJson(src);
     6     }
     7     @Override
     8     public <T> T toObject(String json, Class<T> claxx) {
     9         return gson.fromJson(json, claxx);
    10     }
    11     @Override
    12     public <T> T toObject(byte[] bytes, Class<T> claxx) {
    13         return gson.fromJson(new String(bytes), claxx);
    14     }
    15     @Override
    16     public <T> List<T> toList(String json, Class<T> claxx) {
    17           Type type = new TypeToken<ArrayList<T>>() {}.getType();  
    18              List<T> list = gson.fromJson(json, type);  
    19         return list;
    20     }
    21 }
    技术分享

     

 
然后就是一句话,完美解析json了:
  1.  1 JavaBean bean =GsonImpl.get().toObject(json,JavaBean.class); 
完美解析json就是这么简单,就是这么酸爽。
 
解析json的工具类来自lite君的github的轮子代码。
https://github.com/litesuits/android-lite-http/tree/master/library/src/com/litesuits/http/data
 
 
第二部分:使用GsonFormat 解析  和风天气接口数据
 
和风天气:http://www.heweather.com/     每日3000次访问量,对我们业余爱好者足够了,拿来做个天气预报DEMO不错。
 
首先是从和风天气获得的天气数据,Jason 格式, 放到 jason.parse.online.fr上看是这样的:
技术分享
 
技术分享
但是!!!!!    按照第一部分的方法,个Jason  数据复制进去,点OK 你会发现它提示   Parse err!   为什么了,因为这个和风天气奇葩的Jason数据,第一个KEY是 "HeWeather data service 3.0" ,,这里的 空格、“.”都是不合法的,导致它解析不出对应得实体类。    那怎么办了?
 首先,解析的时候直接 把接口方法的Jason数据(上图左边部分) 的第一行,第一个KEY,也就是    "HeWeather data service 3.0" 替换成 "HeWeatherdataservice",去掉空格以及3.0, 复制进GsonFormat插件的粘贴板,点击OK,你会发现解析成功了。      
 然后,把网页返回的Json原始数据也做上述 处理,再解析。  实体类 和 要解析的数据当然要保持一致对吧~ 
技术分享
这里我用了 StringBulder的 deleteCharAt 方法,按照字符串的下标把空格和 “3.0”去掉了,,然后, 用第一张说的一行代码,Json解析搞定~~~  调试看我的weatherBean  这个对象里,数据都已经乖乖的在那里了!!
 
总结:搞了我好半天,这个格式不规范的Jason数据,不过也算找到了 处理方法,接口得到的Jason数据要是不规范,可以先自己处理成规范的格式,,用JasonFormat插件进行解析,然后程序里在HTTP方式获取到Jason  String后,也用代码处理成一样的格式。  这样,实体类和Jason String对应起来,格式一致。  接下来,就是一行代码搞定的事了 。。。。。是不是 从此Json 解析都能2分钟搞定呢???~~~  喜欢请点赞!
 
 

以上是关于c# jason解析的主要内容,如果未能解决你的问题,请参考以下文章

jason有一个字符串字段为null,因此Jackson解析器抛出错误

如何在对象 C 中解析具有多个实例的 JSON [重复]

Jason

Kafka深度解析

Spring源码入门——AnnotationBeanNameGenerator解析

jason和XML的区别