java - 如何使用 Jackson 创建这个 json 字符串?

标签 java json jackson

这是我想要的输出

{"node":{"type":"community","field_incentives":{"und":[{"value":"fun"},{"value":"nice"}]},"field_community_email":{"und":[{"value":"some@one.com"}]}}}

这是我的代码,但它似乎没有生成上面的输出。如果有更好更简单的方法来做到这一点,请告诉我。谢谢

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
JsonFactory f = new JsonFactory();
JsonGenerator g = f.createJsonGenerator(outputStream);
g.writeStartObject();
g.writeObjectFieldStart("node");
g.writeStringField("type", "community");
g.writeObjectFieldStart("field_incentives");
g.writeFieldName("und");
g.writeStartArray();
???I don't know how to make [{"value":"fun"},{"value":"nice"}]
g.writeEndArray();
g.writeEndObject();
g.close();

最佳答案

我只是逐行写入你的输出 json 文件 Reference JsonGenerator .希望对您有所帮助。

import java.io.File;
import java.io.IOException;
import org.codehaus.jackson.JsonEncoding;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.map.JsonMappingException;

public class CopyOfJacksonStreamExample {
   public static void main(String[] args) {

     try {

    JsonFactory jfactory = new JsonFactory();

    /*** write to file ***/
    JsonGenerator jGenerator = jfactory.createJsonGenerator(new File(
            "c:\\user.json"), JsonEncoding.UTF8);
    jGenerator.writeStartObject(); // {

    jGenerator.writeObjectFieldStart("node"); // node: {
    jGenerator.writeStringField("type", "community"); // "type" : "community"

    jGenerator.writeObjectFieldStart("field_incentives"); // "field_incentives" : {
    jGenerator.writeFieldName("und"); // "und" :
    jGenerator.writeStartArray(); // [
    jGenerator.writeStartObject(); // {
    jGenerator.writeStringField("value", "fun"); // "value" : "fun"
    jGenerator.writeStringField("value", "nice"); // "value" : "nice"
    jGenerator.writeEndObject(); // }
    jGenerator.writeEndArray(); // ]
    jGenerator.writeEndObject(); // } end of field_incentives

    jGenerator.writeObjectFieldStart("field_community_email"); // "field_community_email" : {
    jGenerator.writeFieldName("und"); // "und" :
    jGenerator.writeStartArray(); // [
    jGenerator.writeStartObject(); // {
    jGenerator.writeStringField("value", "some@one.com"); // "value" : "fun"
    jGenerator.writeEndObject(); // }
    jGenerator.writeEndArray(); // ]
    jGenerator.writeEndObject(); // } end of field_community_email

    jGenerator.writeEndObject(); // } end of node
    jGenerator.writeEndObject(); // }

    jGenerator.close();

     } catch (JsonGenerationException e) {

    e.printStackTrace();

     } catch (JsonMappingException e) {

    e.printStackTrace();

     } catch (IOException e) {

    e.printStackTrace();

     }

   }

}

关于java - 如何使用 Jackson 创建这个 json 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12594095/

相关文章:

json - 如何使用 Scala 解析可能包含一些缺失或额外字段的深层嵌套 JSON 文档?

json - 使用java流的复杂对象的组列表

php - 强制 json_encode 将(稀疏)数组编码为 php 中的索引数组

当键值发生变化时使用jackson将Json转换为java对象

java - Spring MVC 和 Jackson 映射不返回 json 中的根元素

java - 在 Java 中迭代 Map

java - JVM 是否容易受到分析或直接访问?

java - mk在单个 Jenkins 作业中运行多个 Gradle 任务

spring-boot - 在 Springboot 应用程序中 Autowiring ObjectMapper

java - 黑莓中隐藏菜单项