java json前后台_Java前后端JSON总结

学习过程中看过很多博客,由于时间久了,以及找不到原文链接,作者看到后找我,本人核实后会加上参考链接,谢谢。

JSON(JavaScript Object Notation)JavaScript对象表示法

类库选择

Java中并没有内置JSON的解析,因此使用JSON需要借助第三方类库。

下面是几个常用的 JSON 解析类库:

Gson: 谷歌开发的 JSON 库,功能十分全面。

FastJson: 阿里巴巴开发的 JSON 库,性能十分优秀。

Jackson: 社区十分活跃且更新速度很快。

FastJson

JSON对象——>JSON字符串(JSONObject对象.toJSONString)

public void testJson() {

JSONObject object = new JSONObject();

object.put("string","string");

object.put("int",2);

object.put("boolean",true);

List integers = Arrays.asList(1,2,3);

object.put("list",integers);

object.put("null",null);

System.out.println(object);

response.getWriter().println(object.toJSONString);

}

JSON字符串——>JSON对象(JSONObject.parseObject(JSON字符串))

public void testJson2() {​

JSONObject object = JSONObject.parseObject("{\"boolean\":true,\"string\":\"string\",\"list\":[1,2,3],\"int\":2}");

String s = object.getString("string");

System.out.println(s);

int i = object.getIntValue("int");

System.out.println(i);

boolean b = object.getBooleanValue("boolean");

System.out.println(b);

List integers = JSON.parseArray(object.getJSONArray("list").toJSONString(),Integer.class);

integers.forEach(System.out::println);

System.out.println(object.getString("null"));​

}

JSON:JSON字符串Json对象

方法

作用

JSON.parseObject(String)

从字符串解析 JSON 对象

JSON.parseArray(String)

从字符串解析 JSON 数组

JSON.toJSONString(object/array)

将 JSON 对象或 JSON 数组转化为字符串

//从字符串解析JSON对象

JSONObject obj = JSON.parseObject("{\"runoob\":\"菜鸟教程\"}");

//从字符串解析JSON数组

JSONArray arr = JSON.parseArray("[\"菜鸟教程\",\"RUNOOB\"]\n");

//将JSON对象转化为字符串

String objStr = JSON.toJSONString(obj);

//将JSON数组转化为字符串

String arrStr = JSON.toJSONString(arr);

JSON和JSONObject的区别

JSON是一个抽象类,JSON中有一个静态方法parseObject(String text),将text解析为一个JSONObject对象并返回;

JSONObject是一个继承自JSON的类,当调用JSONObject.parseObject(result)时,会直接调用父类的parseObject(String text)。

所以两者没什么区别,一个是用父类去调用父类自己的静态的parseObject(String text),一个是用子类去调用父类的静态parseObject(String text),两者调的是同一个方法。

一些博客上的案例

public static void main(String[] args) {

List list=new ArrayList<>();

Student student=new Student("bob",24);

Student student12=new Student("lily", 23);

list.add(student);

list.add(student12);

System.out.println("*******javaBean to jsonString*******");

String str1=JSON.toJSONString(student);

System.out.println(str1);

System.out.println(JSON.toJSONString(list));

System.out.println("******jsonString to javaBean*******");

//Student stu1=JSON.parseObject(str1,new TypeReference(){});

Student stu1=JSON.parseObject(str1,Student.class);

System.out.println(stu1);

System.out.println("******javaBean to jsonObject******");

JSONObject jsonObject1=(JSONObject)JSON.toJSON(student);

System.out.println(jsonObject1.getString("name"));

System.out.println("******jsonObject to javaBean******");

Student student2=JSON.toJavaObject(jsonObject1, Student.class);

System.out.println(student2);

System.out.println("*******javaBean to jsonArray******");

List stulist=new ArrayList<>();

for(int i=0;i<5;i++){

stulist.add(new Student("student"+i, i));

}

JSONArray jsonArrays=(JSONArray)JSON.toJSON(stulist);

for(int i=0;i

System.out.println(jsonArrays.getJSONObject(i));

}

System.out.println("*****jsonArry to javalist******");

List myList=new ArrayList<>();

for(int i=0;i

Student student3=JSON.toJavaObject(jsonArrays.getJSONObject(i), Student.class);

myList.add(student3);

}

for(Student stu:myList){

System.out.println(stu);

}

System.out.println("*****jsonObject to jsonString*****");

String str4=JSON.toJSONString(jsonObject1);

System.out.println(str4);

System.out.println("*******jsonString to jsonObject*****");

JSONObject jso1=JSON.parseObject(str1);

System.out.println(jso1.getString("name"));

System.out.println("*****jsonString to jsonArray*****");

JSONArray jArray=JSON.parseArray(JSON.toJSONString(stulist));

for(int i=0;i

System.out.println(jArray.getJSONObject(i));

}

}

前端

JSON字符串——>JSON对象

第一种方法:使用jquery中的$.parseJSON(),但是它对json数据格式的要求较高,必须要双引号包围起来

var jsonStr1 = "{\"name\":\"盖伦\"}";

var jsonStr2 = '{"name":"不祥之刃"}';

var a = $.parseJSON(jsonStr1);

console.log(a.name);

var c = $.parseJSON(jsonStr2);

console.log("这是一个json对象:",c);

第二种方法:使用js中eval来强转

优点是对json格式要求没有那么严格,但是在处理复杂json数据时不好,例如含有对象的

var jsonstr1="[{\"id\":\"1\",\"name\":\"张三\"},{'id':2,'name':'李四'},{id:3,name:'王五'}]";

//上面这三种写法不论是用单引号包裹或者双引号包裹或不包裹,都可以用eval解析过来

var obj = eval('('+jsonstr1+')');

console.log(obj);

console.log(obj[0].name);

注:其中string必须是JSON字符串,不然报错,而直接eval(JSON对象),会直接返回,因为eval函数中参数只能是字符串,非字符串,会直接返回原对象。

第三种方法:使用浏览器自带的JSON.parse()

与jquery一样,对json格式要求较高

var jsonStr="{\"id\":\"4\",\"name\":\"王五\"}";

var obj = JSON.parse(jsonStr);

console.log(obj);

注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。

JSON对象——>json字符串

浏览器支持的转换方式

--json为JSON对象

var temp = JSON.stringify(json);

注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。

get请求 JSON特殊字符处理 :

encodeURI("ws://localhost:8080/message?msg="+JSON.stringify(message))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值