gpt4 book ai didi

json - 我想用一个整数数组作为 Java 中的值向 JSON 对象添加一个属性

转载 作者:行者123 更新时间:2023-12-04 10:44:46 26 4
gpt4 key购买 nike

我想创建一个 JSON 对象,其中一个属性的值是一个数组,它应该如下所示:

{
"id": 1,
"name": "Whatever",
"indices": [1, 2, 3, 4]
}

运行以下代码:
private void createJsonWithArrayAsPropertyValue() throws IOException {
JsonObjectBuilder job = Json.createObjectBuilder();
job.add("id", 1);
job.add("name", "no-name");
job.add("indices", Json.createArrayBuilder()
.add(1)
.add(2)
.add(3)
.build());
System.out.println(new StringBuffer("\tJSON String = ").append(job.toString()).append("\n"));

JsonObject jsonObject = job.build();
Writer writer = new StringWriter();

// region Print the JSON object into a String
Json.createWriter(writer).write(jsonObject);
StringBuffer jsonString = new StringBuffer(writer.toString());
System.out.println(new StringBuffer("\tjsonString = ").append(jsonString).append("\n"));
// endregion

// region Print the JSON using PRETTY_PRINTING format
Map<String, Boolean> config = new HashMap<>();
config.put(JsonGenerator.PRETTY_PRINTING, true);
JsonWriterFactory writerFactory = Json.createWriterFactory(config);
writer = new StringWriter();
writerFactory.createWriter(writer).write(jsonObject);
jsonString = new StringBuffer(writer.toString());
System.out.println(new StringBuffer("\tjsonString (PRETTY_PRINTING) = ").append(jsonString).append("\n"));
// endregion Print the JSON using PRETTY_PRINTING format
System.out.println("-------------------------------------------------");

}

使用 com.json.JSONObject 创建 JSON 对象索引属性作为字符串输入:
{
"id": 1,
"name": "Whatever",
"indices": "[1, 2, 3]"
}

我正在寻找一种不会将元素值作为字符串输入的解决方案,而且我不限于使用任何特定的包。

更新 使用 javax.json.Json像这样:
    jo.put("indices", Json.createArrayBuilder()
.add(1)
.add(2)
.add(3)
.build());

pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.beniregev</groupId>
<artifactId>demos_and_tutorials</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demos_and_tutorials</name>
<description>Java 8 + Spring Boot project for demos and tutorials</description>

<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.RC1</spring-cloud.version>
<javafaker.version>0.17.2</javafaker.version>
<mapdb.version>3.0.7</mapdb.version>
<android-json.version>0.0.20131108.vaadin1</android-json.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.json/javax.json-api -->
<dependency>
<groupId>javax.json</groupId>
<artifactId>javax.json-api</artifactId>
<version>1.1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish/javax.json -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.javafaker</groupId>
<artifactId>javafaker</artifactId>
<version>${javafaker.version}</version>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mapdb/mapdb -->
<dependency>
<groupId>org.mapdb</groupId>
<artifactId>mapdb</artifactId>
<version>${mapdb.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.vaadin.external.google</groupId>
<artifactId>android-json</artifactId>
<version>${android-json.version}</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>

</project>

更新 2:我为 org.glassfish 添加了依赖,所以 javax.json可以运行,正如它在 Java JSON Tutorial - JSON Java 上所说的那样以及 Java API for JSON Processing - Getting Started .
更新 3 由于我的 pom.xml 中的依赖项之间的冲突而得到的异常,我将我的代码移动到一个单独的项目和 它有效 .

我收到一个异常(我在 pom.xml 中遗漏了什么?):
javax.json.JsonException: Provider org.glassfish.json.JsonProviderImpl not found
at javax.json.spi.JsonProvider.provider(JsonProvider.java:99)
at javax.json.Json.createArrayBuilder(Json.java:262)
at com.beniregev.demos_and_tutorials.demos.JsonDemo.simpleJsonObjectWithArrayAsValue(JsonDemo.java:41)
at com.beniregev.demos_and_tutorials.demos.JsonDemo.main(JsonDemo.java:57)
Caused by: java.lang.ClassNotFoundException: org.glassfish.json.JsonProviderImpl
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at javax.json.spi.JsonProvider.provider(JsonProvider.java:96)
... 3 more

我将不胜感激任何帮助。

最佳答案

docsJSONObject您需要使用 Json.createArrayBuilder() :

private void simpleJsonObjectWithArrayAsValue() throws JSONException {
JSONObject jo = new JsonObject();
jo.put("id", Json.createValue(1));
jo.put("name", Json.createValue("Whatever"));
jo.put("indices", Json.createArrayBuilder()
.add(1)
.add(2)
.add(3)
.build());

System.out.println("JSON String = " + new StringBuffer().append(jo.toString() + "\n");
}

如果你有一个现有的数组,你需要遍历它并调用 .add()对于每个元素。

关于json - 我想用一个整数数组作为 Java 中的值向 JSON 对象添加一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59754426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com