在本例中,我们将看到如何使用JSON-P库将JSON写入文件。
代码示例在Github repository.上提供
JSON处理(JSON-P)是一种处理(例如解析、生成、转换和查询)JSON消息的Java API。它以流方式生成和使用JSON文本(类似于XML的StAX API),并允许使用API类(类似于用于XML的DOM API)为JSON文本构建Java对象模型。
官方文档-https://javaee.github.io/jsonp上阅读更多关于JSON-P的信息。
JSON-P是Java JSON处理API的参考实现。我们可以通过添加以下依赖项在maven项目中使用它:
<dependency>
<groupId>javax.json</groupId>
<artifactId>javax.json-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.1</version>
</dependency>
让我们创建一个名为“posts.JSON”的JSON文件:
{
"id": 100,
"title": "JSONP Tutorial",
"description": "Post about JSONP",
"content": "HTML content here",
"tags": [
"Java",
"JSON"
]
}
我们有Java bean类,它们将上述JSON格式表示为:
package net.javaguides.jsonp.tutorial;
import java.util.Arrays;
public class Post {
private int id;
private String title;
private String description;
private String content;
private String[] tags;
public Post() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String[] getTags() {
return tags;
}
public void setTags(String[] tags) {
this.tags = tags;
}
@Override
public String toString() {
return "Post [id=" + id + ", title=" + title + ", description=" + description + ", content=" + content +
", tags=" + Arrays.toString(tags) + "]";
}
}
在本例中,我们将PostJavabean对象写入JSON文件“posts.JSON”。在下面的示例中,我们使用JsonGenerator.PRETTY_PRINTING
配置设置,以便可以设置写入程序进行打印。
package net.javaguides.jsonp.tutorial;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import javax.json.Json;
import javax.json.JsonArrayBuilder;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import javax.json.JsonWriter;
import javax.json.JsonWriterFactory;
import javax.json.stream.JsonGenerator;
/**
* Class to write json to a posts.json file.
* @author Ramesh fadatare
*
*/
public class WriteJSON {
public static void main(String[] args) throws FileNotFoundException {
Post post = createPost();
JsonObjectBuilder postBuilder = Json.createObjectBuilder();
JsonArrayBuilder tagsBuilder = Json.createArrayBuilder();
for (String tag: post.getTags()) {
tagsBuilder.add(tag);
}
postBuilder.add("id", post.getId())
.add("title", post.getTitle())
.add("description", post.getDescription())
.add("content", post.getContent())
.add("tags", tagsBuilder);
JsonObject postJsonObject = postBuilder.build();
System.out.println("Post JSON String -> " + postJsonObject);
//write to file
OutputStream os = new FileOutputStream("posts.json");
JsonWriter jsonWriter = Json.createWriter(os);
Map < String, Boolean > config = new HashMap < String, Boolean > ();
config.put(JsonGenerator.PRETTY_PRINTING, true);
JsonWriterFactory factory = Json.createWriterFactory(config);
jsonWriter = factory.createWriter(os);
jsonWriter.writeObject(postJsonObject);
jsonWriter.close();
}
private static Post createPost() {
// create a post
Post post = new Post();
post.setTitle("JSONP Tutorial");
post.setId(100);
post.setDescription("Post about JSONP");
post.setContent("HTML content here");
String[] tags = {
"Java",
"JSON"
};
// create some predefined tags
post.setTags(tags);
// set tags to post
return post;
}
}
让我们理解上面的Java JSON编写一个示例。
主要的JSON-P入口点是JSON类。它提供了从Java解析和构建JSON字符串的所有必要方法。Json是一个包含Json-PAPI所有相关元素的静态工厂方法的单例。
JsonObjectBuilder postBuilder = Json.createObjectBuilder();
JsonArrayBuilder tagsBuilder = Json.createArrayBuilder();
我们创建了一个Json对象,如下所示:
postBuilder.add("id", post.getId())
.add("title", post.getTitle())
.add("description", post.getDescription())
.add("content", post.getContent())
.add("tags", tagsBuilder);
JsonObject postJsonObject = postBuilder.build();
将上面创建的内容写入“posts.json”文件并使用JsonGenerator.pretty_PRINTING设置进行漂亮打印:
//write to file
OutputStream os = new FileOutputStream("posts.json");
JsonWriter jsonWriter = Json.createWriter(os);
Map<String, Boolean> config = new HashMap<String, Boolean>();
config.put(JsonGenerator.PRETTY_PRINTING, true);
JsonWriterFactory factory = Json.createWriterFactory(config);
jsonWriter = factory.createWriter(os);
jsonWriter.writeObject(postJsonObject);
jsonWriter.close();
代码示例在my Github repository.上提供。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.javaguides.net/2019/07/java-write-json-example-json-processing.html
内容来源于网络,如有侵权,请联系作者删除!