一、简介

    1、描述
        1)JavaScript 对象表示法(JavaScript Object Notation)

2)存储和交换文本信息的语法。类似 XML

3)比 XML 更小、更快,更易解析

4)独立于语言

2、语法

1)花括号保存对象,方括号保存数组,数据在名称/值对中,数据由逗号分隔

例如:

{

"employees": [

{ "firstName":"John" , "lastName":"Doe" },

{ "firstName":"Anna" , "lastName":"Smith" },

{ "firstName":"Peter" , "lastName":"Jones" }

]

}

2)JSON 值可以是:

    • 数字(整数或浮点数)
    • 字符串(在双引号中)
    • 逻辑值(true 或 false)
    • 数组(在方括号中)
    • 对象(在花括号中)
    • null
    3、JSON对象
        1)JSON 对象在花括号中书写:
            对象可以包含多个名称/值对:
            { "firstName":"John" , "lastName":"Doe" }
        2)这一点也容易理解,与这条 JavaScript 语句等价:
            firstName = "John"
            lastName = "Doe"
    4、JSON 数组
         1)JSON 数组在方括号中书写:
                数组可包含多个对象:
[
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
二、JavaScript中解析JSON
    1、JSON字符串
         '内容’
    2、JSON字符串->JavaScript对象
         1)eval函数
            var obj = eval ("(" + txt + ")");
            注意:存在潜在的安全问题
         2)JSON解析器
            var obj = JSON.parse(txt)
三、JAVA中
    1、JSONObject
        - JSONObject.fromObject(Object object)    JSONObject       //object可以是Map,Bean,JSON字符串("{'hello':'world','abc':'xyz'}")
        - getString(String key)   String       //获取对象的属性值,类似:get(String key)  Object,get(Object key)   Object
        - put(Object key,Object value)      //增加对象的属性
        - JSONObject.toBean(JSONObject,Class)    Object      //Map,可以直接强制类型转换
    2、JSONArray
        1)转JSONArray
            - JSONArray.fromObject(Object  object)   JSONArray      //object可以是List,数组,Map,JSON字符串("['name','world']")
            - add(Object value)
            - add(int index,Object value)
        2)转List,Map,数组
            直接强制类型转换

-------------------------------------分割线---------------------------------------------------

下面举几个具体的列子理解下上面写的内容

1、JSONObject

定义一个JavaBean

public class Student {
private String name;
private int Grade;
private List<String> teachers; public Student() {
} public Student(String name, int grade, List<String> teachers) {
super();
this.name = name;
Grade = grade;
this.teachers = teachers;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getGrade() {
return Grade;
} public void setGrade(int grade) {
Grade = grade;
} public List<String> getTeachers() {
return teachers;
} public void setTeachers(List<String> teachers) {
this.teachers = teachers;
} }

主方法:

public class TestJson {
public static void main(String[] args) {
List<String> teacherList = new ArrayList<String>();
teacherList.add("math");
teacherList.add("english");
Student stu = new Student("yaohuix", 2, teacherList);
JSONObject jsonObject = JSONObject.fromObject(stu);
// Bean转JSONObject或JSON字符串(只要toString())
System.out.println(jsonObject);// 输出:{"grade":15,"name":"yaohuix","teachers":["math","english"]}
// JSONObject或JSON字符串(只要toString())转Bean
Student otherStu = (Student) JSONObject.toBean(jsonObject,
Student.class);
System.out.println(otherStu.getName());// 输出:yaohuix
System.out.println(otherStu.getGrade());// 输出:2
System.out.println(otherStu.getTeachers());// 输出:[math, english]
}
}

JSON入门的更多相关文章

  1. JSON入门指南--客户端处理JSON

    在传统的Web开发过程中,前端工程师或者后台工程师会在页面上写后台的相关代码,比如在ASP.NET MVC4里面写如下代码: @Html.TextBoxFor(m => m.UserName, ...

  2. 初学者看过来之JSON入门

    1. 什么是JSON JSON---Javascript Object Notation,前两个单词大家应该都认识,最后一个notation,是"记号.标记法"的意思,连在一起,便 ...

  3. JSON入门指南--服务端处理JSON

    平时公司使用的ASP.NET MVC3来开发Web项目,其实在ASP.NET中已经原生的支持JSON.所以基本不需要引进Newtonsoft.Json.dll.下面看在MVC4中,后台生成JSON数据 ...

  4. (Spring4 json入门)Spring4+SpringMVC+页面数据发送与接收(json格式)

    jar包(Maven仓库): Spring4 jar包(Maven仓库): 在测试过程中我查看了网上的一些教程,但是那些教程都是在Spring3环境下的,Spring3和Spring4解析json需要 ...

  5. JSON入门教程

    尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web Services,否则,在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 ...

  6. JSON入门学习

    JSON是一种与开发语言无关的轻量级的数据格式(JavaScript Object Notation) 优点:易于阅读和编写,易于程序解析和生产 JSON数据格式中没有日期及时间的数据格式的.一般直接 ...

  7. [转]JSON 入门指南

    原文地址:http://www.ibm.com/developerworks/cn/web/wa-lo-json/ 尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web ...

  8. json入门(二)

    背景 之前最早的时候,也见过类似于这样的字符串: {"list":[           {"ArticleId":7392749,"BlogId&q ...

  9. json 入门(1)

    1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,Java arrays和xml和JSON互相转换的包. 2.下载jar包 http:// ...

随机推荐

  1. linux操作系统基础

    计算机概述 1.计算机接收用户输入指令数据,经过cpu数据与逻辑单元运算处理后,产生或储存成有用的信息--->I/O设备+cpu+处理信息=计算机. 2.计算机五大单元:I/O单元 内存单元 c ...

  2. GDB配置与.gdbinit的编写

    GDB配置与.gdbinit的编写 当 GDB(即 GNU Project Debugger)启动时,它在当前用户的主目录中寻找一个名为 .gdbinit 的文件:如果该文件存在,则 GDB 就执行该 ...

  3. fonts.useso.com 访问变慢

    fonts.useso.com 替换为        fonts.lug.ustc.edu.cn ajax.useso.com   替换为       ajax.lug.ustc.edu.cn the ...

  4. js判断是否是移动端 访问移动端网址

    1以下为代码,可放置在网站foot底部文件,或者haead顶部文件,建议将代码放在网站顶部,这样可以实现手机访问立即跳转! <script src="http://siteapp.ba ...

  5. Linux 动态链接库

    如何使用动态链接库 Linux下打开使用动态链接库需要三步(实际上和windows下基本一样):1.加载动态链接库,通过调用库函数dlopen()获得链接库的句柄,对应于windows下的 AfxLo ...

  6. K2新网站(官网和BPM社区)正式上线了

    K2新网站(官网和BPM社区)正式上线了 K2新网站(官网和BPM社区)正式上线了 K2新网站(官网和BPM社区)正式上线了 通常重要的事情要讲三遍, 官网:www.k2software.cn 社区: ...

  7. serialize和unserialize函数

    序列化是将变量转换为可保存或传输的字符串的过程:反序列化就是在适当的时候把这个字符串再转化成原来的变量使用.这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性.1. serialize和u ...

  8. 看的oracle数据库视频 记的一点笔记

    3个默认的用户    sys          //网络管理员  权限由上到下降低 [最后加上 as sysdba]    system  //本地管理员    scott     //普通用户  默 ...

  9. 安全协议系列(五)---- IKE 与 IPSec(中)

    在上一篇中,搭建好了实验环境.完整运行一次 IKE/IPSec 协议,收集相关的输出及抓包,就可以进行协议分析.分析过程中,我们将使用 IKE 进程的屏幕输出和 Wireshark 抓包,结合相关 R ...

  10. protobuf简介和使用

    1.Protocol Buffers简介 Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据 ...