一、简介

    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. 【MCU】【STM32】1.cube MX库使用笔记

    STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列.(如,STM32CubeF4 是针对STM32F4系列). 平台包括了STM32Cube 硬件抽象层和一套的中间件组件(RTOS, ...

  2. 网站整体架构去Windows化

    数据层放弃SQL Server数据库和存储过程,全部迁移到Linux平台上的MySQL数据库上: 缓存不再依赖.net自身提供的缓存机制,迁移到部署在Linux平台上的分布式的Redis上: 服务之间 ...

  3. Android中Activity加入Fragment使用注意事项及常用技巧

    Fragment中AlertDialog弹出窗口的使用 Fragment默认不具有Content的一些方法和属性,因此在Activity中可以使用的一些方法在Fragment中使用就需要一些小技巧了 ...

  4. C# 压缩文件与字节互转

    public class ZipBin { public byte[] bytes; //C#读取压缩文件(将压缩文件转换为二进制 public void GetZipToByte(string in ...

  5. OC基础--Property

    编译器指令: 用来告诉编译器要做什么 @property: @property是编译器的指令 告诉编译器在@interface中自动生成setter和getter的声明 @synthesize: @s ...

  6. hihoCoder#1039

    刚开始学习C语言,准备在做hiho的题目的过程中来学习,在此进行记录,如果代码中有错误或者不当的地方还请指正. 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在 ...

  7. hibernate 返回新插入数据的Id

    例如 表明 studentInfo String sql="set set nocount on studentInfo(列名,列名) values('值','值');select @@id ...

  8. 简单的ATM,见笑见笑

    #include<stdio.h>#include<string.h> void main(){  char a[4]={0}; char e[]="9527&quo ...

  9. struts2 错误提示页面

    以前做的一个网站,最近服务器后台出现一些异常,问题是客户访问一个该网站下不存在的action,为了给客户一个友好的界面提示以及减小服务器端日志文件的内容.就在struts2下进行了如下配置: 在str ...

  10. MVC 支持同名路由,不同命名空间

    有时候我们会碰到两个项目合在一起,那么必然会碰到两个同名的controller,其实MVC在注册路由,添加Route的时候可以指定当前规则解析那个命名空间下的所有Controller. 注:Contr ...