zoukankan      html  css  js  c++  java
  • JOSN快速入门

    1.JSON介绍

      (1)JSON是一种与开发语言无关的,轻量级的数据格式,全称 JavaScript Object  Notation,易于阅读和编写,语言解析和生产

      (2)JSON数据类型表示

           数据结构:Map、Array

           基本类型:String、number、true、false、null

           Map:

                     使用花括号 {} 标识的键值对结构,key必须是String类型,value为任何基本类型或数据结构

                     

           Array:

                     使用中括号 [] 来起始,并用逗号来分割元素,元素可以是任何类型,就是普通意义上的数组

                     

           基本类型:待续。。。。

      (3)JSON数据演示:                                 

          

           {

                "name":“王小二”  ,

                "age" :25 ,

                "birthday" :"1995-01-01" ,

                "project" :["理发","挖掘机"] ,

                "hasGrilfriend" : false ,

                "house":false ,

                "car" :{ }

           }

          注 :  JSON里面没有日期或时间这类数据格式 ,所有的key使用String类型     

    • 数据在键值对中
    • 数据由逗号分隔
    • 花括号保存对象
    • 方括号保存数组

      (4)JSON的使用

       方法JSONObject不规范,我们可以 单击右键使用Refactor中的rename修改方法名,方便地进行同步修改,所有被引用的地方都会被同步改写

       

        JSON Editor Online生成结果:

         

      (5)使用HashMap够建JSON

         

      (6)使用Java Bean创建JSON

          Java Bean即一个实体对象(C#中的叫法),可以重用

          

     (7)解析JSON

       从文件中读取JSON(依赖 commons-io)(待续。。。。。。。http://www.imooc.com/video/12680  慕课网视频)

     (8)说一说 TypeToken 吧

              GSON提供了 TypeToken 这个类来帮助我们捕获像List<MyZhuiHaoDetailModel>这样的泛型信息。

              private List<MyZhuiHaoDetailModel> listLottery = new ArrayList<MyZhuiHaoDetailModel>();

              Gson gson=new Gson();

              listLottery =  gson.fromJson(object.getString("lists"),

              new TypeToken<List<MyZhuiHaoDetailModel>>() {  }.getType());

             上文创建了一个匿名内部类,这样,Java编译器就会把泛型信息编译到这个匿名内部类里,然后在运行时就可以被 getType()方法用反射API提取到。

             下面来看看gson的反序列化,Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。我们一般都会碰到两种情况,转成单一实体对象和

        转换成对象列表或者其他结构。

        eg:

               》转成单一实体对象:

               json字符串为:{"name":"name0","age":0}

               代码:需要提供两个参数,分别是json字符串以及需要转换对象的类型

              Person person = gson.fromJson(str, Person.class);

               》转换成对象列表

               List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());

               for(int i = 0; i < ps.size() ; i++)

               {

                        Person p = ps.get(i);

                       System.out.println(p.toString());

                }

         注:如果我没有写大括号{};就是TypeToken<List<Person>>()后面的这个{},表示很普通的new一个对象,如果那个类的构造方法是私有的,

        肯定不能直接new了,否则就会编译报错。加上大括号表示你new了一个匿名内部类的对象,比如new TypeToken<List<Person>>(){},这个匿名内部

     类继承自TypeToken类。。你可以在大括号里面像写其他普通类代码一样随意写代码。。你可以在里面定义个方法等等。。

    《匿名内部类》
    比如我们给一个按钮加监听。。比如
    JButton btn = new JButton("test");
            btn.addActionListener(new ActionListener() {
    			
    			public void actionPerformed(ActionEvent e) {
    				
    			}
    		});
     btn.addActionListener()方法接受的是一个ActionListener类型的对象。。而ActionListener是一个接口。。不能直接new。。所以本来我们应该写一个类实现
    ActionListener接口。。然后这里给他传一个那个实现类的对象。。但是。。我们不想那么麻烦了。。因为这种情况太多。。所以我们直接在这里创建了那个类。。
    之所以叫匿名。。就是我们没有给他取名字就让他叫ActionListener接口的名字。。然后在这里实现那个方法。。


    待续。。。。。。




    Newtonsoft.Json是支持序列化和反序列化DataTable,DataSet,Entity Framework和Entity的。
    C# 中后台传json数据给前台时:

    1.OptOut 类中所有公有成员会被序列化,如果不想被序列化,可以用特性JsonIgnore

    2.OptIn  所有的成员不会被序列化,类中的成员只有标有特性JsonProperty的才会被序列化,当类的成员很多,但客户端仅仅需要一部分数据时,很有用

    3.    JsonProperty   实体中定义的属性名可能不是自己想要的名称,但是又不能更改实体定义,这个时候可以自定义序列化字段名称。


     




     
     
     

      

                    

               

  • 相关阅读:
    <span>和<div>标签的隐藏和显示切换
    重启svn
    Mac下配置apache
    iOS时间显示今天昨天
    关于UIPageViewController那些事
    关于plist文件的那些事
    Xcode调试LLDB
    Reveal安装
    静态初始化器
    Static简介
  • 原文地址:https://www.cnblogs.com/1955/p/7359797.html
Copyright © 2011-2022 走看看