(JavaScript Object Notation,即JavaScript对象标记)
是一种轻量级的数据交换格式,是存储和交换文本信息的语法,类似于xml,
是独立语言,什么语言都可以解析json
长度比xml小,读写速度快,可以使用JavaScript内建方法直接解析转换为JavaScript对象,
易于人阅读,易于程序解析 ,在各种编程语言中都被支持并广泛运用于前后端的数据传送交互
语法规则:
1、数据结构:
Object:{}包含的键值对结构,key必须是string类型,value为任何基本类型或对象
Array :[]包含,逗号分隔
2、基本类型:string、number、true 、false
读取json: 一般通过JSON.parse();方法来读取
SON 和 JS 对象互转
要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法:
var json =JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a":"Hello", "b": "World"}'
要实现从 JSON 转换为对象,使用 JSON.parse() 方法:
var obj =JSON.parse('{"a": "Hello", "b":"World"}'); //结果是 {a: 'Hello', b: 'World'}
Json在java中的调用
首先,在JAVA中使用JSON需要引入 org.json 包
并在程序中引入相应的JSON类:
import org.json.JSONArray;
importorg.json.JSONException;
import org.json.JSONObject;
json使用时,首先在服务端将数据进行json封装:
//声明一个Hash对象并添加数据
Map params = new HashMap();
params.put("username", username);
params.put("user_json", user);
//声明JSONArray对象并输入JSON字符串
JSONArray array =JSONArray.fromObject(params);
put.println(array.toString());
然后在前端进行数据的相应解析,也就是将json数据进行解析:
//@description: 根据接收到的JSON字符串来解析字符串中所包含的数据和数据对象
//接收到的JSON字符串
String result ="[{\"username\": \"your name\",\"user_json\": {\"username\": \"your name\",\"nickname\": \"your nickname\"}}]";
//根据字符串生成JSON对象
JSONArray resultArray = newJSONArray(result);
JSONObject resultObj =resultArray.optJSONObject(0);
//获取数据项
String username =resultObj.getString("username");
//获取数据对象
JSONObject user =resultObj.getJSONObject("user_json");
String nickname =user.getString("nickname");
另外,关于json在Java中的使用最重要的就是几种数据格式之间的转化:
1、String 转换为JSON对象
public class StringToJSON {
public static void main(String[] args)throws JSONException{
System.out.println("abc");
//定义JSON字符串
String jsonStr ="{\"id\": 2," +
" \"title\":\"json title\", " +
"\"config\":{" +
"\"width\":34," +
"\"height\":35," +
"}, \"data\":[" +
"\"JAVA\",\"JavaScript\", \"PHP\"" +
"]}";
//转换成为JSONObject对象
JSONObject jsonObj = newJSONObject(jsonStr);
//从JSONObject对象中获取数据
JavaBean bean = new JavaBean();
//根据属性名称获取int型数据;
bean.setId(jsonObj.getInt("id"));
//根据属性名获取String数据;
bean.setTitle(jsonObj.getString("title"));
//根据属性名获取JSONObject类
JSONObject config =jsonObj.getJSONObject("config");
bean.setWidth(config.getInt("width"));
bean.setHeight(config.getInt("height"));
//根据属性名获取JSONArray数组
JSONArray data =jsonObj.getJSONArray("data");
for(int index = 0, length =data.length(); index < length; index++) {
// bean.setLanguages(String[]); }
}
}
2、JSON对象转换为String字符串
//创建JSONObject对象
JSONObject json = new JSONObject();
//向json中添加数据
json.put("username","wanglihong");
json.put("height", 12.5);
json.put("age", 24);
//创建JSONArray数组,并将json添加到数组
JSONArray array = new JSONArray();
array.put(json);
//转换为字符串
String jsonStr = array.toString();
3、集合转换为JSONArray对象
//初始化ArrayList集合并添加数据
List<String> list = newArrayList<String>();
list.add("username");
list.add("age");
list.add("sex");
//初始化HashMap集合并添加数组
Map map = new HashMap();
map.put("bookname","CSS3实战");
map.put("price", 69.0);
//初始化JSONArray对象,并添加数据
JSONArray array = new JSONArray();
array.put(list);
array.put(map);
//生成的JSON字符串为:[["username","age","sex"],{"price":69,"bookname":"CSS3实战"}]