一、简介

    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. c++读书笔记, 零散点滴的收获

    1. 字节长度: short <= int <= long <= long long 2. wchar_t,最大扩展字符集合:char16_t.char32_t,unocide字符集 ...

  2. Virtual Box 下Ubuntu桥接网络设置

    转自:http://os.51cto.com/art/200908/144564.htm 一般而言,安装完VirtualBox设定网路时选择默认的NAT模式,Guest就可顺利联网了,但是这种方式比较 ...

  3. css 背景透明文字(内容)不透明三种实现方法

    好久没写博客了.以前还想着最少一个月抽空写几篇.结果没做到O(∩_∩)O~~.好吧.现在努力,继续坚持. 看着以前写的东西,感觉自己在逐渐成长. 先上图: 本文主要记录如上图一样的.文字或内容不透明, ...

  4. Eclipse+Maven创建webapp项目

    Eclipse+Maven创建webapp项目<一> 1.开启eclipse,右键new-->other,如下图找到maven project 2.选择maven project,显 ...

  5. 针对不同浏览器,CSS如何写

    我们在开发DIV+CSS页面时候常常会遇到开发出的网页的一些地方在各大浏览器比如微软IE6.微软IE7.微软IE8.火狐浏览器.谷歌浏览器有一些不同,如宽度.高度等地方有相差误.IE6比较老的版本浏览 ...

  6. 一步一步搭框架(asp.netmvc+easyui+sqlserver)-02

    一步一步搭框架(asp.netmvc+easyui+sqlserver)-02 我们期望简洁带前台代码,如下: <table id="dataGrid" class=&quo ...

  7. Intel RealSense SDK 简翻

    :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1);border-radius:3px ...

  8. UART接口基本知识

    Universal asynchronous transciever即同一异步收发器,也就是我们平时所说的串口,是一种最简单,最基本的通信接口. 通信接口按照不同的标准有不同的分类,常见的有同步或异步 ...

  9. 数据导出到excel

    jsp页面: 数据table: <form action="/export.jsp" method="post" id="expform&quo ...

  10. 转载——C++控制台贪吃蛇代码

    游戏截图: 以下是3个代码文件: Snake_Class.h文件: 1 #ifndef SNAKE 2 #define SNAKE 3 4 #include<windows.h> 5 #i ...