`
一条来自于深海的小鱼
  • 浏览: 2217 次
  • 性别: Icon_minigender_2
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

JSON(JavaScript Object Notation)学习笔记

 
阅读更多
JSON(JavaScript Object Notation): 是一种轻量级的数据交换格式
一、JSON建构有两种结构:对象和数组
1、对象:对象在js中表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”扩起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。
二、具体形式
1、对象
(1)一个对象以“{”(左括号)开始,“}”(右括号)结束。
(2)每个“名称”后跟一个“:”(冒号)
(3)“‘名称/值’ 对”之间使用“,”(逗号)分隔
例子:表示人的一个对象:
{
"姓名" : "大憨",
"年龄" : 24
}
2、数组是值(value)的有序集合。
(1)一个数组以“[”(左中括号)开始,“]”(右中括号)结束。
(2)值之间使用“,”(逗号)分隔。
例子:一组学生
{
"学生" :
[
{"姓名" : "小明" , "年龄" : 23},
{"姓名" : "大憨" , "年龄" : 24}
]
}
说明:此Json对象包括了一个学生数组,而学生数组中的值又是两个Json对象。
说了这些基本了解json的数据结构了...

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.LinkedHashMap; 
import java.util.List; 
import java.util.Map; 
 
import net.sf.ezmorph.bean.MorphDynaBean; 
import net.sf.json.JSONArray; 
import net.sf.json.JSONFunction; 
import net.sf.json.JSONObject; 
 
public class JsonTest { 
 
    public static void main(String args[]) { 
        //javaArray和json互相转换 
        javaArrayAndJsonInterChange(); 
        System.out.println("-------------------------------------"); 
        //javaList和json互相转换 
        javaListAndJsonInterChange(); 
        System.out.println("-------------------------------------"); 
        //javaMpa和Json互转 
        javaMapAndJsonInterChange(); 
        System.out.println("-------------------------------------"); 
        //javaObject和jsonObject互转 
        javaObjectAndJsonInterChange(); 
    } 
 
    /**
     * javaArray和json互相转换
     */ 
    public static void javaArrayAndJsonInterChange() { 
        // java 转数组 
        boolean[] boolArray = new boolean[] { true, false, true }; 
        JSONArray jsonArray = JSONArray.fromObject(boolArray); 
        String s = jsonArray.toString(); 
        System.out.println(s); 
 
        // 通过json获取数组中的数据 
        String result = readJson("configdata"); 
 
        JSONArray jsonR = JSONArray.fromObject(result); 
        int size = jsonR.size(); 
        for (int i = 0; i < size; i++) { 
            System.out.println(jsonR.get(i)); 
        } 
    } 
 
    /**
     * javaList和json互相转换
     */ 
    public static void javaListAndJsonInterChange() { 
        List list = new ArrayList(); 
        list.add(new Integer(1)); 
        list.add(new Boolean(true)); 
        list.add(new Character('j')); 
        list.add(new char[] { 'j', 's', 'o', 'n' }); 
        list.add(null); 
        list.add("json"); 
        list.add(new String[] { "json", "-", "lib" }); 
 
        // list转JSONArray 
        JSONArray jsArr = JSONArray.fromObject(list); 
        System.out.println(jsArr.toString(4)); 
 
        // 从JSON串到JSONArray 
        jsArr = JSONArray.fromObject(jsArr.toString()); 
        // --从JSONArray里读取 
        // print: json 
        System.out.println(((JSONArray) jsArr.get(6)).get(0)); 
    } 
 
    /**
     * javaMpa和Json互转
     */ 
    public static void javaMapAndJsonInterChange() { 
        Map map = new LinkedHashMap(); 
        map.put("integer", new Integer(1)); 
        map.put("boolean", new Boolean(true)); 
        map.put("char", new Character('j')); 
        map.put("charArr", new char[] { 'j', 's', 'o', 'n' }); 
        // 注:不能以null为键名,否则运行报net.sf.json.JSONException: 
        // java.lang.NullPointerException: 
        // JSON keys must not be null nor the 'null' string. 
        map.put("nullAttr", null); 
 
        map.put("str", "json"); 
        map.put("strArr", new String[] { "json", "-", "lib" }); 
        map.put("jsonFunction", new JSONFunction(new String[] { "i" },"alert(i)")); 
        map.put("address", new Address("P.O BOX 54534", "Seattle, WA", 42452,"561-832-3180", "531-133-9098")); 
        // map转JSONArray 
        JSONObject jsObj = JSONObject.fromObject(map); 
        System.out.println(jsObj.toString(4)); 
         
        // 从JSON串到JSONObject 
        jsObj = JSONObject.fromObject(jsObj.toString()); 
 
        //第一种方式:从JSONObject里读取 
        // print: json 
        System.out.println(jsObj.get("str")); 
        // print: address.city = Seattle, WA   
        System.out.println("address.city = " + ((JSONObject) jsObj.get("address")).get("city"));   
 
         
        //第二种方式:从动态Bean里读取数据,由于不能转换成具体的Bean,感觉没有多大用处 
        MorphDynaBean mdBean = (MorphDynaBean) JSONObject.toBean(jsObj); 
        // print: json 
        System.out.println(mdBean.get("str")); 
        //print: address.city = Seattle, WA   
        System.out.println("address.city = " + ((MorphDynaBean) mdBean.get("address")).get("city"));   
 
    } 
     
    /**
     * javaObject和jsonObject互转
     */ 
    public static void  javaObjectAndJsonInterChange(){ 
        Address address=new Address("P.O BOX 54534", "Seattle, WA", 42452,"561-832-3180", "531-133-9098"); 
        //object转JSONObject 
        JSONObject jsObj = JSONObject.fromObject(address); 
        System.out.println(jsObj.toString(4)); 
         
        //JsonObject转java Object 
         
        Address addressResult=(Address) JSONObject.toBean(jsObj, Address.class); 
        System.out.println("address.city = "+ addressResult.getCity()); 
        System.out.println("address.street="+addressResult.getStreet()); 
        System.out.println("address.tel = "+ addressResult.getTel()); 
        System.out.println("address.telTwo="+addressResult.getTelTwo()); 
        System.out.println("address.zip="+addressResult.getZip()); 
    } 
 
    /**
     * 读取json文件
     * @param fileName 文件名,不需要后缀
     * @return
     */ 
    public static String readJson(String fileName) { 
        String result = null; 
        try { 
            File myFile = new File("./config/" + fileName + ".json"); 
            FileReader fr = new FileReader(myFile); 
            char[] contents = new char[(int) myFile.length()]; 
            fr.read(contents, 0, (int) myFile.length()); 
            result = new String(contents); 
            fr.close(); 
        } catch (FileNotFoundException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
        return result; 
    } 
}

作者:Legendshop刘滔
分享到:
评论

相关推荐

    json-lib 学习笔记 分享下

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递数据。而`json-lib`是一个Java库,它提供了将Java对象转换为JSON格式以及从JSON反序列化回Java对象的功能。这个学习...

    javascript中的数组对象以及json学习笔记

    在JavaScript中,数组对象和JSON(JavaScript Object Notation)是两种非常重要的数据结构,它们在处理和存储数据方面起着核心作用。这篇学习笔记将深入探讨这两种数据结构的特性和用法。 首先,我们来了解...

    JavaScript数组对象JSON学习笔记

    ### JavaScript 数组对象 JSON 学习笔记 #### 一、JavaScript 数组操作 在 JavaScript 中,数组是一种常用的数据结构,用于存储多个值。本部分主要介绍如何创建数组、访问数组元素以及对数组进行各种操作。 #####...

    JavaScript学习笔记

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 - **JSON对象表示法:** JSON格式使用`{}`来表示一个对象,属性由键值对组成,其中键名必须为...

    Json学习笔记

    ### JSON学习笔记:深入了解JSON与Spring框架中的初始化机制 #### JSON简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以其简洁性和易读性而著称,不仅适用于人眼阅读,也便于机器解析和...

    《JSON-lib框架,转换JSON、XML不再困难》学习笔记

    JSON-lib是一个Java库,用于将Java对象转换为JSON(JavaScript Object Notation)格式,反之亦然。这个框架使得在Java应用程序中处理JSON数据变得简单,特别是在Web开发中,JSON经常被用作轻量级的数据交换格式。...

    JavaWeb02-JavaScript学习笔记

    JavaScript基础知识点 JavaScript是一种脚本语言...本笔记涵盖了JavaScript的基础知识点,包括变量、数据类型、流程控制语句、函数、数组、对象、JSON、BOM和Location等概念,为学习JavaScript提供了一个良好的基础。

    json 学习笔记 相关知识点

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于ECMAScript的一个子集,采用了一种完全独立于语言的文本格式,使得JSON成为理想的数据交换语言...

    WCF返回JSON学习笔记

    - **JSON (JavaScript Object Notation)**:是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON基于JavaScript编程语言的标准子集,因此在Web应用中非常流行。 #### 二、使用WCF返回...

    javascript学习笔记

    以上是对给定文件中JavaScript学习笔记的部分内容进行的详细解读,涵盖了JavaScript的基础知识、语法、数据类型、函数、对象、数组、DOM编程、AJAX以及JSON和jQuery的简介,旨在为初学者提供全面的入门指南。

    json 学习笔记_20140116.pdf

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在本文档《json 学习笔记_***.pdf》中,主要介绍了在Java开发中,如何使用三个常用的JSON处理工具:...

    JSON学习笔记

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,但也使用了类似于C家族语言(包括C、C++、C#、Java、JavaScript等)的习惯,使得这些语言的程序员可以很容易地...

    Spring MVC 学习笔记 九 json格式的输入和输出

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于前后端数据传输。 1. **JSON格式简介** JSON是一种文本格式,易于人阅读和编写,同时也易于机器解析和生成。它的数据结构主要由对象...

    json学习笔记、jackson的jar包

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于前后端数据传输。Jackson是Java领域中处理JSON的主流库之一,它提供了高效且功能丰富的API,使得JSON的序列化和反序列化变得简单易行。在...

    javaScript DOM编程艺术2版学习笔记

    在这个学习笔记中,涵盖了从基础到高级的JavaScript和DOM操作技巧,一共涉及1~9章的内容。以下是对这些章节知识点的详细阐述: **第1章:JavaScript简介** 本章介绍了JavaScript的基本概念,包括它是一种解释型、弱...

    Javascript学习笔记.docx

    10. JSON(JavaScript Object Notation): JSON是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。在JavaScript中,可以使用`JSON.parse()`和`JSON.stringify()`进行序列化和反序列化。 ...

    Javascript 面向对象程式学习笔记收藏

    示例中的`var b`是一个JSON(JavaScript Object Notation)对象,它同样具有属性和方法。JSON是一种轻量级的数据交换格式,虽然在这里它被用来表示JavaScript对象。`b.run()`和`b.sayHello()`是`b`对象的方法,可以...

    json-rpc-java-1.0.zip

    JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种轻量级的远程调用协议,它使用JSON(JavaScript Object Notation)作为数据交换格式。在Java环境中实现JSON-RPC,可以帮助开发者构建分布式系统...

Global site tag (gtag.js) - Google Analytics