1、引入jackson依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
2、编写java对象:
package json;
public class Stock {
private String code;
private String name;
private int price;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
3、java对象和json字符串互相转换:
package test;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
import org.spring.teach.servlet.Stock;
import java.util.*;
public class TestCase {
/**
* POJO转成JSON
* @throws Exception
*/
@Test
public void test1() throws Exception {
Stock s = new Stock();
s.setCode("600877");
s.setName("中国嘉陵");
s.setPrice(9);
System.out.println(s);
//使用jackson提供的api来转换
ObjectMapper om = new ObjectMapper();
String jsonStr = om.writeValueAsString(s);
System.out.println(jsonStr);
}
/**
* Array转成JSON
* @throws Exception
*/
@Test
public void test2() throws Exception {
Stock[] stocks = new Stock[3];
Random r = new Random();
for (int i = 0; i < 3; i++) {
Stock s = new Stock();
s.setCode("600877");
s.setName("中国嘉陵");
s.setPrice(r.nextInt(1000));
stocks[i] = s;
}
System.out.println(Arrays.toString(stocks));
//使用jackson提供的api来转换
ObjectMapper om = new ObjectMapper();
String jsonStr = om.writeValueAsString(stocks);//得到的是一个数组字符串
System.out.println(jsonStr);
}
/**
* List转成JSON
* @throws Exception
*/
@Test
public void test3() throws Exception {
List<Stock> stocks = new ArrayList<>();
Random r = new Random();
for (int i = 0; i < 3; i++) {
Stock s = new Stock();
s.setCode("600877");
s.setName("中国嘉陵");
s.setPrice(r.nextInt(1000));
stocks.add(s);
}
System.out.println(stocks);
//使用jackson提供的api来转换
ObjectMapper om = new ObjectMapper();
String jsonStr = om.writeValueAsString(stocks);//得到的是一个数组字符串
System.out.println(jsonStr);
}
/**
* Map转成JSON
* @throws Exception
*/
@Test
public void test4() throws Exception {
Map<String, Stock> stocks = new HashMap<>();
Random r = new Random();
for (int i = 0; i < 3; i++) {
Stock s = new Stock();
s.setCode("600877");
s.setName("中国嘉陵");
s.setPrice(r.nextInt(1000));
stocks.put("ele" + i, s);
}
System.out.println(stocks);
//使用jackson提供的api来转换
ObjectMapper om = new ObjectMapper();
String jsonStr = om.writeValueAsString(stocks);//得到的是一个json对象字符串
System.out.println(jsonStr);
}
/**
* JSON转成POJO
* @throws Exception
*/
@Test
public void test5() throws Exception {
String jsonStr = "{\"code\":\"600877\",\"name\":\"中国嘉陵\",\"price\":9}";
ObjectMapper om = new ObjectMapper();
Stock s = om.readValue(jsonStr, Stock.class);
System.out.println(s);
}
/**
* JSON转成Array
* @throws Exception
*/
@Test
public void test6() throws Exception {
String jsonStr = "[{\"code\":\"600877\",\"name\":\"中国嘉陵\",\"price\":694},{\"code\":\"600877\",\"name\":\"中国嘉陵\",\"price\":96},{\"code\":\"600877\",\"name\":\"中国嘉陵\",\"price\":460}]";
ObjectMapper om = new ObjectMapper();
JavaType type = om.getTypeFactory().constructArrayType(Stock.class);
Stock[] arr = om.readValue(jsonStr, type);
System.out.println(Arrays.toString(arr));
}
/**
* JSON转成List
* @throws Exception
*/
@Test
public void test7() throws Exception {
String jsonStr = "[{\"code\":\"600877\",\"name\":\"中国嘉陵\",\"price\":468},{\"code\":\"600877\",\"name\":\"中国嘉陵\",\"price\":82},{\"code\":\"600877\",\"name\":\"中国嘉陵\",\"price\":279}]";
ObjectMapper om = new ObjectMapper();
JavaType type = om.getTypeFactory().constructCollectionType(List.class, Stock.class);
List<Stock> list = om.readValue(jsonStr, type);
System.out.println(list);
}
/**
* JSON转成Map
* @throws Exception
*/
@Test
public void test8() throws Exception {
String jsonStr = "{\"ele2\":{\"code\":\"600877\",\"name\":\"中国嘉陵\",\"price\":710},\"ele1\":{\"code\":\"600877\",\"name\":\"中国嘉陵\",\"price\":606},\"ele0\":{\"code\":\"600877\",\"name\":\"中国嘉陵\",\"price\":417}}";
ObjectMapper om = new ObjectMapper();
JavaType type = om.getTypeFactory().constructMapType(Map.class, String.class, Stock.class);
Map<String, Stock> map = om.readValue(jsonStr, type);
System.out.println(map);
}
}
4、页面使用js内置JSON对象把json字符串转成JSON对象:
//将json字符串转换成js对象
function f4() {
var str = '{"name":"悟空", "salary":1000}';
//使用js内置对象JSON的parse()方法来转换
var obj = JSON.parse(str);
alert(obj.name);
}
function f5() {
var str = '[{"name":"悟空", "salary":1000},{"name":"八戒", "salary":800}]';
//使用js内置对象JSON的parse()方法来转换
var arr = JSON.parse(str);
alert(arr[1].name);
}