Java编写JSON示例-JSON处理API

x33g5p2x  于2022-10-16 转载在 Java  
字(4.6k)|赞(0)|评价(0)|浏览(877)

在本例中,我们将看到如何使用JSON-P库将JSON写入文件。
代码示例在Github repository.上提供

JSON-P格式

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项目中使用它:

  1. <dependency>
  2. <groupId>javax.json</groupId>
  3. <artifactId>javax.json-api</artifactId>
  4. <version>1.1</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.glassfish</groupId>
  8. <artifactId>javax.json</artifactId>
  9. <version>1.1</version>
  10. </dependency>

让我们创建一个名为“posts.JSON”的JSON文件:

  1. {
  2. "id": 100,
  3. "title": "JSONP Tutorial",
  4. "description": "Post about JSONP",
  5. "content": "HTML content here",
  6. "tags": [
  7. "Java",
  8. "JSON"
  9. ]
  10. }

我们有Java bean类,它们将上述JSON格式表示为:

  1. package net.javaguides.jsonp.tutorial;
  2. import java.util.Arrays;
  3. public class Post {
  4. private int id;
  5. private String title;
  6. private String description;
  7. private String content;
  8. private String[] tags;
  9. public Post() {
  10. }
  11. public int getId() {
  12. return id;
  13. }
  14. public void setId(int id) {
  15. this.id = id;
  16. }
  17. public String getTitle() {
  18. return title;
  19. }
  20. public void setTitle(String title) {
  21. this.title = title;
  22. }
  23. public String getDescription() {
  24. return description;
  25. }
  26. public void setDescription(String description) {
  27. this.description = description;
  28. }
  29. public String getContent() {
  30. return content;
  31. }
  32. public void setContent(String content) {
  33. this.content = content;
  34. }
  35. public String[] getTags() {
  36. return tags;
  37. }
  38. public void setTags(String[] tags) {
  39. this.tags = tags;
  40. }
  41. @Override
  42. public String toString() {
  43. return "Post [id=" + id + ", title=" + title + ", description=" + description + ", content=" + content +
  44. ", tags=" + Arrays.toString(tags) + "]";
  45. }
  46. }

Java JSON编写示例

在本例中,我们将PostJavabean对象写入JSON文件“posts.JSON”。在下面的示例中,我们使用JsonGenerator.PRETTY_PRINTING配置设置,以便可以设置写入程序进行打印。

  1. package net.javaguides.jsonp.tutorial;
  2. import java.io.FileNotFoundException;
  3. import java.io.FileOutputStream;
  4. import java.io.OutputStream;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. import javax.json.Json;
  8. import javax.json.JsonArrayBuilder;
  9. import javax.json.JsonObject;
  10. import javax.json.JsonObjectBuilder;
  11. import javax.json.JsonWriter;
  12. import javax.json.JsonWriterFactory;
  13. import javax.json.stream.JsonGenerator;
  14. /**
  15. * Class to write json to a posts.json file.
  16. * @author Ramesh fadatare
  17. *
  18. */
  19. public class WriteJSON {
  20. public static void main(String[] args) throws FileNotFoundException {
  21. Post post = createPost();
  22. JsonObjectBuilder postBuilder = Json.createObjectBuilder();
  23. JsonArrayBuilder tagsBuilder = Json.createArrayBuilder();
  24. for (String tag: post.getTags()) {
  25. tagsBuilder.add(tag);
  26. }
  27. postBuilder.add("id", post.getId())
  28. .add("title", post.getTitle())
  29. .add("description", post.getDescription())
  30. .add("content", post.getContent())
  31. .add("tags", tagsBuilder);
  32. JsonObject postJsonObject = postBuilder.build();
  33. System.out.println("Post JSON String -> " + postJsonObject);
  34. //write to file
  35. OutputStream os = new FileOutputStream("posts.json");
  36. JsonWriter jsonWriter = Json.createWriter(os);
  37. Map < String, Boolean > config = new HashMap < String, Boolean > ();
  38. config.put(JsonGenerator.PRETTY_PRINTING, true);
  39. JsonWriterFactory factory = Json.createWriterFactory(config);
  40. jsonWriter = factory.createWriter(os);
  41. jsonWriter.writeObject(postJsonObject);
  42. jsonWriter.close();
  43. }
  44. private static Post createPost() {
  45. // create a post
  46. Post post = new Post();
  47. post.setTitle("JSONP Tutorial");
  48. post.setId(100);
  49. post.setDescription("Post about JSONP");
  50. post.setContent("HTML content here");
  51. String[] tags = {
  52. "Java",
  53. "JSON"
  54. };
  55. // create some predefined tags
  56. post.setTags(tags);
  57. // set tags to post
  58. return post;
  59. }
  60. }

让我们理解上面的Java JSON编写一个示例。
主要的JSON-P入口点是JSON类。它提供了从Java解析和构建JSON字符串的所有必要方法。Json是一个包含Json-PAPI所有相关元素的静态工厂方法的单例。

  1. JsonObjectBuilder postBuilder = Json.createObjectBuilder();
  2. JsonArrayBuilder tagsBuilder = Json.createArrayBuilder();

我们创建了一个Json对象,如下所示:

  1. postBuilder.add("id", post.getId())
  2. .add("title", post.getTitle())
  3. .add("description", post.getDescription())
  4. .add("content", post.getContent())
  5. .add("tags", tagsBuilder);
  6. JsonObject postJsonObject = postBuilder.build();

将上面创建的内容写入“posts.json”文件并使用JsonGenerator.pretty_PRINTING设置进行漂亮打印:

  1. //write to file
  2. OutputStream os = new FileOutputStream("posts.json");
  3. JsonWriter jsonWriter = Json.createWriter(os);
  4. Map<String, Boolean> config = new HashMap<String, Boolean>();
  5. config.put(JsonGenerator.PRETTY_PRINTING, true);
  6. JsonWriterFactory factory = Json.createWriterFactory(config);
  7. jsonWriter = factory.createWriter(os);
  8. jsonWriter.writeObject(postJsonObject);
  9. jsonWriter.close();

代码示例在my Github repository.上提供。

相关文章

最新文章

更多