zoukankan      html  css  js  c++  java
  • JSON总结

    一 简介:
    JSON(JavaScript对象符号)是一种轻量级的数据交换格式。这是很容易为人类所读取和写入。这
    是易于机器解析和生成。它是基于JavaScript编程语言的一个子集 , 标准ECMA-262第三版- 1999年12月
    。JSON是一个完全独立于语言的文本格式,但使用C家族的语言,包括C,C + +,C#,Java中的
    JavaScript,Perl的,Python中,和许多其他程序员所熟悉的约定。这些特性使JSON成为理想的数据交换
    语言。他和map很类似,都是以
    键/值 对存放的。

    二 JSON 使用须要用的JAR包:

    commons-lang.jar
    commons-beanutils.jar
    commons-collections.jar
    commons-logging.jar
    ezmorph.jar
    json-lib-2.2.2-jdk15.jar



    三 使用JSON中的JSONObject:
    1.创建一个JSONObject对象,并使用put();方法添加元素:
    首先我们创建一个User对象以备后用:

    public class User {
    private int id;
    private String name;
    private String pwd;
    private String sex;
    //get,set方法
    @Override
    //重写他的toString方法
    public String toString() {
    return this.name+"--"+this.pwd+"--"+this.sex;
    }
    }
    例子如下:

    import net.sf.json.JSONObject;
    public class TestJson {
    private static JSONObject json = null;
    public static void main(String[] args) {
    json = new JSONObject();
    json.put("id","1");
    json.put("name","张三");
    json.put("pwd","123456");
    System.out.println(json);
    }
    }
    运行:
    C:java>java TestJson
    {"id":"1","name":"张三","pwd":"123456"}

    通过这段代码我们就能很清淅的看到他的添加元素和map集合方式一样。
    现在我们要将这个json对象放进一个JAVABEAN的User对象怎么弄呢?很简单
    我们须要在 TestJson 类中的主方法中加入(放在System.out.println(json)这句话后面)

    User user = new User();
    user.setId(Integer.parseInt(json.getString("id")));

    //json.getString("id")就是通过他的KEY值取得对应的value值
    user.setName(json.getString("name"));
    user.setPwd(json.getString("pwd"));
    System.out.println(user);

    这样我们就把json这个对象里的值放进user对象里面了。
    运行:
    C:java>java TestJson
    {"id":"1","name":"张三","pwd":"123456"}
    张三--123456--null

    json添加元素除了用put();方法之外还可以用element();如:json.element("11", "222");

    2.创建一个JSONArray对象,并添加元素:

    JSONArray添加元素和list集合一样,当然取值也很像,代码如下
    import net.sf.json.*;
    public class TestJson1 {
    private static JSONObject json = null;
    private static JSONArray jsonArray = null;
    public static void main(String[] args) {
    jsonArray = new JSONArray ();
    jsonArray.add(0, "张三");
    jsonArray.add(1, "李四");
    jsonArray.add(2, "王五");
    jsonArray.add(3, "小三");
    System.out.println(jsonArray);
    System.out.println(jsonArray.get(1));
    }
    }
    输出结果为:
    ["张三","李四","王五","小三"]
    李四

    注:json的基本格式这些网上很多,就不多说了,我们只须记住一句话就行了:[]表示数组,{}表示对象
    就完了!


    1.从Object到String
    要先用Object对象构造一个JSONObject或者JSONArray对象,然后调用它的toString()方法即可
    (1)示例一
    Book book=new Book();
    book.setName("Java");
    book.setPrice(52.3f);
    JSONObject object=JSONObject.fromObject(book);
    System.out.println(object.toString());
    (2)示例二
    Book book=new Book();
    book.setName("Java");
    book.setPrice(52.3f);

    Book book2=new Book();
    book2.setName("C");
    book2.setPrice(42.3f);
    List list=new ArrayList();
    list.add(book);
    list.add(book2);
    JSONArray arry=JSONArray.fromObject(list);
    System.out.println(arry.toString());
    //结果如下:
    [{"name":"Java","price":52.3},{"name":"C","price":42.3}]
    2.从String到Object
    要先用String对象构造一个JSONObject或者JSONArray对象
    (1)示例一
    String json="{name:'Java',price:52.3}";
    JSONObject object=JSONObject.fromObject(json);
    System.out.println(object.get("name")+" "+object.get("price"));

    (2)示例二
    String json="[{name:'Java',price:52.3},{name:'C',price:42.3}]";
    JSONArray array=JSONArray.fromObject(json);
    for(int i=0;i< array.size();i++){
    Map o=(Map)array.get(i);
    System.out.println(o.get("name")+" "+o.get("price"));
    }
    3.从String到Bean
    (1)单个Bean对象
    String json="{name:'Java',price:52.3}";
    JSONObject object=JSONObject.fromObject(json);
    Product product=(Product)JSONObject.toBean(object,Product.class);
    System.out.println(product.getName()+" "+product.getPrice());

    (2).Bean的数组
    String json="[{name:'Java',price:52.3},{name:'C',price:42.3}]";
    JSONArray array=JSONArray.fromObject(json);
    Product[] products=(Product[]) JSONArray.toArray(array,Product.class);
    for(Product p:products){
    System.out.println(p.getName()+" "+p.getPrice());
    }
    自定义封装JSON操作的类
    package com.util;

    import java.util.List;
    import java.util.Map;

    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;

    public class JsonHelper {
    //从普通的Bean转换为字符串
    public static String getJson(Object o){
    JSONObject jo=JSONObject.fromObject(o);
    return jo.toString();
    }
    //从Java的列表转换为字符串
    public static String getJson(List list){
    JSONArray ja=JSONArray.fromObject(list);
    return ja.toString();
    }
    //从Java对象数组转换为字符串
    public static String getJson(Object[] arry){
    JSONArray ja=JSONArray.fromObject(arry);
    return ja.toString();
    }

    //从json格式的字符串转换为Map对象
    public static Map getObject(String s){
    return JSONObject.fromObject(s);
    }


    //从json格式的字符串转换为List数组

    public static List getArray(String s){
    return JSONArray.fromObject(s);
    }
    //从json格式的字符串转换为某个Bean
    public static Object getObject(String s,Class cls){
    JSONObject jo=JSONObject.fromObject(s);
    return JSONObject.toBean(jo, cls);
    }
    //从json格式的字符串转换为某类对象的数组
    public static Object getArray(String s,Class cls){
    JSONArray ja=JSONArray.fromObject(s);
    return JSONArray.toArray(ja, cls);
    }
    }

  • 相关阅读:
    数据库基础之锁(2. 幻读理解)
    数据库基础之锁(3. 避免幻读对事务并发性的影响)
    数据库基础之锁(4. 多版本并发控制MVCC原理详解)
    同步、异步与阻塞非阻塞
    C++基础之Lambda表达式
    C++基础之static的二三事
    个人总结 —— 事事满怀热情
    第三次结对作业:需求建模练习
    第二次结对作业
    第一次结对作业
  • 原文地址:https://www.cnblogs.com/afengboke/p/4610940.html
Copyright © 2011-2022 走看看