jackson框架 json字符串、map、Java对象的转换例子
先下载框架jar包:
下面是一些例子:
package jackson;
import java.io.File;
import java.io.FileInputStream;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.codehaus.jackson.JsonEncoding;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonToken;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.node.ArrayNode;
import org.codehaus.jackson.node.ObjectNode;
import org.junit.Test;
public class Testjackson {
//@Test
public void test1(){
try{
ObjectMapper mapper = new ObjectMapper();
String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";
//json字符串转对象
Student student = mapper.readValue(jsonString, Student.class);
System.out.println(student);
//对象转json字符串
jsonString = mapper.writeValueAsString(student);
System.out.println(jsonString);
//json字符串转为Map对象
Map map=mapper.readValue(jsonString, Map.class);
System.out.println(map);
}catch(Exception e) {
e.printStackTrace();
}
}
//@Test
public void test2(){
try{
Student student = new Student();
student.setAge(10);
student.setName("Mahesh");
ObjectMapper mapper = new ObjectMapper();
//将Java对象序列化到一个JSON文件
mapper.writeValue(new File("d:/student.json"), student);
System.out.println("d:/student.json文件生成结束");
//读取JSON文件转换为对象
Student student2 = mapper.readValue(new File("student.json"), Student.class);
System.out.println(student2);
}catch(Exception e) {
e.printStackTrace();
}
}
//@Test
public void test3(){
try {
ObjectMapper mapper = new ObjectMapper();
Map<String,Object> studentDataMap = new HashMap<String,Object>();
int[] marks = {1,2,3};
Student student = new Student();
student.setAge(10);
student.setName("Mahesh");
studentDataMap.put("student", student);
studentDataMap.put("name", "Mahesh Kumar");
studentDataMap.put("verified", Boolean.FALSE);
studentDataMap.put("marks", marks);
//Map转换为joson文件
mapper.writeValue(new File("d:/student2.json"), studentDataMap);
//result student.json
//{
// "student":{"name":"Mahesh","age":10},
// "marks":[1,2,3],
// "verified":false,
// "name":"Mahesh Kumar"
//}
//json文件转换为map
studentDataMap = mapper.readValue(new File("d:/student2.json"), Map.class);
System.out.println(studentDataMap.get("student"));
System.out.println(studentDataMap.get("name"));
System.out.println(studentDataMap.get("verified"));
System.out.println(studentDataMap.get("marks"));
} catch (Exception e) {
e.printStackTrace();
}
}
//@Test//树遍历
public void test4(){
try {
ObjectMapper mapper = new ObjectMapper();
String jsonString = "{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
JsonNode rootNode = mapper.readTree(jsonString);
JsonNode nameNode = rootNode.path("name");
System.out.println("Name: "+ nameNode.getTextValue());
JsonNode ageNode = rootNode.path("age");
System.out.println("Age: " + ageNode.getIntValue());
JsonNode verifiedNode = rootNode.path("verified");
System.out.println("Verified: " + (verifiedNode.getBooleanValue() ? "Yes":"No"));
JsonNode marksNode = rootNode.path("marks");
Iterator<JsonNode> iterator = marksNode.getElements();
System.out.print("Marks: [ ");
while (iterator.hasNext()) {
JsonNode marks = iterator.next();
System.out.print(marks.getIntValue() + " ");
}
System.out.println("]");
} catch (Exception e) {
e.printStackTrace();
}
}
//@Test//树到JSON转换
public void test5(){
try {
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.createObjectNode();
JsonNode marksNode = mapper.createArrayNode();
((ArrayNode)marksNode).add(100);
((ArrayNode)marksNode).add(90);
((ArrayNode)marksNode).add(85);
((ObjectNode) rootNode).put("name", "Mahesh Kumar");
((ObjectNode) rootNode).put("age", 21);
((ObjectNode) rootNode).put("verified", false);
((ObjectNode) rootNode).put("marks",marksNode);
mapper.writeValue(new File("d:/student3.json"), rootNode);
rootNode = mapper.readTree(new FileInputStream("student.json"));
JsonNode nameNode = rootNode.path("name");
System.out.println("Name: "+ nameNode.getTextValue());
JsonNode ageNode = rootNode.path("age");
System.out.println("Age: " + ageNode.getIntValue());
JsonNode verifiedNode = rootNode.path("verified");
System.out.println("Verified: " + (verifiedNode.getBooleanValue() ? "Yes":"No"));
JsonNode marksNode1 = rootNode.path("marks");
Iterator<JsonNode> iterator = marksNode1.getElements();
System.out.print("Marks: [ ");
while (iterator.hasNext()) {
JsonNode marks = iterator.next();
System.out.print(marks.getIntValue() + " ");
}
System.out.println("]");
}catch (Exception e) {
e.printStackTrace();
}
}
//@Test//树到java对象
public void test6(){
try {
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.createObjectNode();
JsonNode marksNode = mapper.createArrayNode();
((ArrayNode)marksNode).add(100);
((ArrayNode)marksNode).add(90);
((ArrayNode)marksNode).add(85);
((ObjectNode) rootNode).put("name", "Mahesh Kumar");
((ObjectNode) rootNode).put("age", 21);
((ObjectNode) rootNode).put("verified", false);
((ObjectNode) rootNode).put("marks",marksNode);
mapper.writeValue(new File("student.json"), rootNode);
rootNode = mapper.readTree(new FileInputStream("student.json"));
Student2 student = mapper.treeToValue(rootNode, Student2.class);
System.out.println("Name: "+ student.getName());
System.out.println("Age: " + student.getAge());
System.out.println("Verified: " + (student.isVerified() ? "Yes":"No"));
System.out.println("Marks: "+Arrays.toString(student.getMarks()));
} catch (Exception e) {
e.printStackTrace();
}
}
@Test//Jackson流式API
public void test7(){
try {
JsonFactory jasonFactory = new JsonFactory();
JsonGenerator jsonGenerator = jasonFactory.createJsonGenerator(new File("d:/student7.json"),
JsonEncoding.UTF8);
jsonGenerator.writeStartObject();
jsonGenerator.writeStringField("name", "Mahesh Kumar");
jsonGenerator.writeNumberField("age", 21);
jsonGenerator.writeBooleanField("verified", false);
jsonGenerator.writeFieldName("marks");
jsonGenerator.writeStartArray();
jsonGenerator.writeNumber(100);
jsonGenerator.writeNumber(90);
jsonGenerator.writeNumber(85);
jsonGenerator.writeEndArray();
jsonGenerator.writeEndObject();
jsonGenerator.close();
//result student.json
//{
// "name":"Mahesh Kumar",
// "age":21,
// "verified":false,
// "marks":[100,90,85]
//}
ObjectMapper mapper = new ObjectMapper();
Map<String,Object> dataMap = mapper.readValue(new File("d:/student7.json"), Map.class);
System.out.println(dataMap.get("name"));
System.out.println(dataMap.get("age"));
System.out.println(dataMap.get("verified"));
System.out.println(dataMap.get("marks"));
} catch (Exception e) {
e.printStackTrace();
}
}
@Test//使用JsonParser 读取JSON
public void test8(){
try {
JsonFactory jasonFactory = new JsonFactory();
JsonGenerator jsonGenerator = jasonFactory.createJsonGenerator(new File(
"student.json"), JsonEncoding.UTF8);
jsonGenerator.writeStartObject();
jsonGenerator.writeStringField("name", "Mahesh Kumar");
jsonGenerator.writeNumberField("age", 21);
jsonGenerator.writeBooleanField("verified", false);
jsonGenerator.writeFieldName("marks");
jsonGenerator.writeStartArray();
jsonGenerator.writeNumber(100);
jsonGenerator.writeNumber(90);
jsonGenerator.writeNumber(85);
jsonGenerator.writeEndArray();
jsonGenerator.writeEndObject();
jsonGenerator.close();
//result student.json
//{
// "name":"Mahesh Kumar",
// "age":21,
// "verified":false,
// "marks":[100,90,85]
//}
JsonParser jsonParser = jasonFactory.createJsonParser(new File("d:/student7.json"));
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
//get the current token
String fieldname = jsonParser.getCurrentName();
if ("name".equals(fieldname)) {
//move to next token
jsonParser.nextToken();
System.out.println(jsonParser.getText());
}
if("age".equals(fieldname)){
//move to next token
jsonParser.nextToken();
System.out.println(jsonParser.getNumberValue());
}
if("verified".equals(fieldname)){
//move to next token
jsonParser.nextToken();
System.out.println(jsonParser.getBooleanValue());
}
if("marks".equals(fieldname)){
//move to [
jsonParser.nextToken();
// loop till token equal to "]"
while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
System.out.println(jsonParser.getNumberValue());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Student2 {
String name;
int age;
boolean verified;
int[] marks;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isVerified() {
return verified;
}
public void setVerified(boolean verified) {
this.verified = verified;
}
public int[] getMarks() {
return marks;
}
public void setMarks(int[] marks) {
this.marks = marks;
}
}
相关推荐
要将JSON字符串转换为Java对象,我们首先需要将JSON解析成一个Map或List。JSON库如Gson提供了`fromJson()`方法来实现这个过程。例如,使用Gson库的代码可能如下: ```java import com.google.gson.Gson; import ...
Gson是由Google提供的一个Java库,能够将Java对象转换为JSON字符串,反之亦然。将JSON字符串转化为Map,可以使用`fromJson()`方法: ```java import com.google.gson.Gson; import java.util.Map; String ...
除了解析JSON字符串到Java对象,这两个库还支持将Java对象转换为JSON字符串,以及解析JSON到Map或List等数据结构。 3. **其他库** 除了Jackson和Gson,还有其他的JSON处理库,如org.json(提供简单的JSON工具类)...
是开源库Apache Commons Lang中的一个类,它提供了解决Java对象与JSON字符串之间转换的功能。这篇博客文章"net.sf.json.JSONObject实现Object对象与Json字符串的互转"深入探讨了如何使用`JSONObject`来处理这种转换...
1. 将Java对象转换为JSON字符串,同样使用`ObjectMapper`: ```java User john = new User(1, "John", "john@example.com"); String johnJson = mapper.writeValueAsString(john); ``` 2. 对于集合类型,如List或...
Java Web 程序实现返回 JSON 字符串的方法总结 Java Web 程序实现返回 JSON 字符串的...使用 json.org 提供的 JSON 库可以轻松地将 Java 对象转换为 JSON 字符串,并且解决了 Java 对象属性为空时返回空字符串的问题。
例如,在将 JSON 字符串转换为 Map 时,如果 JSON 中包含一个非常大的数字,例如 12345678901234567890,这个数字在 Java 中可能会被表示为科学计数法的形式,例如 1.2345678901234567E22。这可能会导致数据的精度...
要将一个Java对象转换为JSON字符串,我们可以使用`ObjectMapper`的`writeValueAsString()`方法。假设我们有一个简单的User类: ```java public class User { private String name; private int age; // getters...
在提供的文件内容中,提到了一种使用org.json库中的JSONObject类实现JSON字符串到Map对象转换的方法。具体步骤如下: 1. 首先,需要将JSON字符串转换为org.json库中的JSONObject对象。这一步可以通过JSONObject类...
- **序列化**: Jackson 提供了 `ObjectMapper` 类,通过 `writeValueAsString()` 或 `writeValueAsBytes()` 方法可以将Java对象转换成JSON字符串或字节数组。 - **反序列化**: 使用 `readValue()` 方法,可以将...
反之,如果要将Java对象转换为JSON字符串,可以使用`ObjectMapper`的`writeValueAsString`方法。 ```java String jsonString = mapper.writeValueAsString(pojo); ``` 3. **配置和自定义** Jackson提供了丰富...
总结,Java对JSON的操作主要包括构建JSON对象、将JSON字符串转换为Java对象、将Java对象转换为JSON字符串,以及与Map对象的相互转换。开发者可以根据项目需求选择Gson、Jackson或其他库进行JSON处理。理解并熟练掌握...
描述中提到了一个实例,也就是使用Jackson库将JSON字符串转换为Java对象(Map),然后使用org.json库读取JSON数组。实例中说明了遇到的困难,即在使用Map读取第一级数据之后,尝试读取数组中的特定值时遇到了问题,...
首先,`JsonUtil.java`很可能是这个功能的核心工具类,它包含了将Java对象转换为JSON字符串以及将JSON字符串解析为Java对象的方法。在没有第三方库如Gson或Jackson的情况下,这通常通过使用Java内置的`org.json`包来...
使用Jackson库的`ObjectMapper`类,我们可以轻松地将JSON字符串解析为Java对象。假设我们有以下JSON字符串: ```json { "name": "John", "age": 30, "city": "New York" } ``` 可以创建一个对应的Java类: ```...
在处理JSON数据时,我们通常需要将Java对象转换为JSON字符串,或者将JSON字符串反序列化为Java对象。这个"Java对象与Json之间的互相转换的jar包"正是提供了这样的功能。 这个jar包可能包含了如Jackson、Gson、...
1. **JSON对象到字符串**:如果你有一个Java对象,例如一个User类的实例,你可以使用JSON库将其转换为JSON字符串。例如,使用Jackson库,你需要先添加依赖,然后创建一个ObjectMapper对象,调用其`...
首先,`json-lib` 支持多种类型的 Java 对象转换,包括基本类型、集合、数组、Map 以及自定义对象。在将 Java 对象转换为 JSON 字符串时,可以使用 `net.sf.json.JSONObject.fromObject()` 方法。例如,对于一个简单...
通过`JSONArray.fromObject(jsonString)`,可以将JSON字符串解析为`JSONArray`,然后通过迭代数组中的每个元素并调用`JSONObject.toBean()`,将每个JSON对象转换为指定类的对象。 `setDataFormat2JAVA`方法未在代码...
上述代码片段展示了一个名为`JSONUtil`的工具类,它提供了将不同类型的Java对象转换为JSON字符串的方法。这个工具类覆盖了基本类型、数组、集合(List、Set)、Map以及JavaBean对象的转换。 1. **基本类型转换**: ...