json简介及在Java中的应用

本文介绍了JSON(JavaScript Object Notation)的基本概念,强调其作为轻量级数据交换格式的特性,与XML的相似性和优势。文章详细阐述了JSON的语法规则,包括对象和数组的结构,并列举了JSON值的类型。还探讨了JavaScript与JSON对象之间的转换方法,如`eval()`和`stringify()`。最后,文章提到了JSON在Java中的应用,列出了关键类如JSONObject和JSONArray,以及它们的方法,如`fromObject()`和`toBean()`,并提供了一个简单的代码示例来说明如何在Java中操作JSON对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSON简介
JavaScript 对象表示法(JavaScript Object Notation),是轻量级的文本数据交换格式。其作用和xml有点类似,但是 比 XML 更小、更快,更易解析。JSON 解析器和 JSON 库支持许多不同的编程语言。

JSON 语法规则
JSON 对象在花括号中书写,对象可以包含多个名称/值对:如

var jsonObj = { "firstName":"John" , "lastName":"Doe" }

•数据在名称/值对中(如name:”tom”)
•数据由逗号分隔
•花括号保存对象
•方括号保存数组

这里介绍一下JSON 值可以是:
•数字(整数或浮点数)
•字符串(在双引号中),如

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

•逻辑值(true 或 false)
•数组(在方括号中),如

var employees =
[{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }]

可以像这样访问 json对象数组中的第一项:employees[0].lastName;
可以这样修改数据:employees[1].firstName=”Tom”

•对象(在花括号中)
•null

javaScript与json对象的互相转换

json对象转成js对象:

json转js字符串:eval(‘(’ + jsonstr + ‘)’); //可以将json字符串转换成json对象(包括数组和字符串!!!),注意需要在json字符外包裹一对小括号;
另外,因为 JSON 使用 JavaScript 语法,所以json数组对象和js数组对象用法类似,都可以直接jsonArr[index]这样使用;

js对象转成json对象:
stringify(jsobj):将对象解析成json字符串!如果对象是js数组,解析成的也是json字符串而非数组(所以不能用数组下标方法了);

json在java中的应用
首先介绍一些json在java中的常用类和方法,所需的jar包如下图

这里写图片描述

常用类:JSONObject(json对象),JSONArray(json数组对象);
常用方法:

  • JSONObject.fromObject(obj):将java对象转成json对象(返回JSONObject);
  • JSONObject.toBean(obj, Student.class):将json对象转成指定类型的对象(返回的是Object对象,需要强制类型转换);
  • JSONArray.fromObject(obj):将java数组对象转成json数组(返回JSONArray);
  • array.getJSONObject(i):json数组获取下标为i的对象(返回JSONObject 对象);
  • jsonArray.toArray():将json数组转换成相应java数组(返回Object[]);
  • jsonObj.put(name,value):JSONObject实例添加元素;

    下面看具体的代码例子:

        //json转成Object  
        String json = "{id:'1001',name:'张三',age:22}";  
        Student stu = null;  
        JSONObject obj = JSONObject.fromObject(json);  
        stu = (Student)JSONObject.toBean(obj, Student.class);


        //从一个JSON数组得到一个java对象数组  
        String jsonStus = "[{id:1,name:'jack',age:20},                   {id:2,name:'rose',age:20},
        {id:3,name:'admin',age:20}]";  
        JSONArray array = JSONArray.fromObject(jsonStus);  
        Student[] stu = new Student[array.size()];  
        for(int i = 0; i < array.size(); i++){  
            JSONObject jsonObject = array.getJSONObject(i);  
            stu[i] = (Student)JSONObject.toBean(jsonObject, Student.class);  
        }  


        //java对象转换为json格式
        JSONObject obj2=new JSONObject();  
        obj2.put("phone","123456");  
        obj2.put("zip","7890");  
        obj2.put("contact",obj2); 


        //一般数组转换成JSON  
        boolean[] boolArray = new boolean[]{true,false,true};    
        JSONArray jsonArray = JSONArray.fromObject( boolArray );

关于JSONObject对象的具体使用方法可以参考:http://www.cnblogs.com/hitwtx/articles/2468633.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值