【问题标题】:JSON: Converting an object into an arrayJSON:将对象转换为数组
【发布时间】:2015-10-30 11:25:20
【问题描述】:

我是第一次使用 JSON,我需要接收 JSON 元素列表并检查这些元素的代码并将它们从对象转换为数组。例如。

{ “钥匙”:“我的钥匙”, “价值”:“我的价值”, “元素”:“x” }

应该变成:

{ “钥匙”:“我的钥匙”, “价值”:“我的价值”, “元素”:[“x”] }

解决方案必须与 java 1.6 兼容。 有人可以推荐我使用哪个解析器来尽可能简单地实现这一点吗?示例代码是什么样的?

【问题讨论】:

  • 从对象到数组的转换对我来说没有多大意义。对象包含键:值对,数组包含项目列表。一种转换是将对象中的键:值对转换为等效的对数组,这不完全是适定转换,但对于简单对象来说是可以的。但是,这似乎不是您正在做的事情。

标签: java arrays json type-conversion


【解决方案1】:

我不知道我是否理解正确,但也许这个例子可以帮助你。

1) 您可以使用 jackson 来处理 json,为此您必须下载 2 个 jar:

http://central.maven.org/maven2/org/codehaus/jackson/jackson-mapper-asl/1.9.13/jackson-mapper-asl-1.9.13.jar

http://central.maven.org/maven2/org/codehaus/jackson/jackson-core-asl/1.9.13/jackson-core-asl-1.9.13.jar

2) 创建下一个类:

第一课是接收你的输入

public class Input {

    private String key;
    private String value;
    private String element;

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getElement() {
        return element;
    }

    public void setElement(String element) {
        this.element = element;
    }
}

第二个类有你想要的元素数组

public class Output {
    private String key;
    private String value;
    private String[] element;

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String[] getElement() {
        return element;
    }

    public void setElement(String[] element) {
        this.element = element;
    }
}

创建第三个以应用转换并运行程序

import org.codehaus.jackson.map.ObjectMapper;

public class TestJson {

    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();

        String originalString ="{\"key\":\"my key\",\"value\":\"my value\",\"element\":\"X\"}";
        System.out.println(" Input: " + originalString);

        Input input = mapper.readValue(originalString, Input.class);
        String[] element = {input.getElement()};

        Output output = new Output();
        output.setKey(input.getKey());
        output.setValue(input.getValue());
        output.setElement(element);

        String result = mapper.writeValueAsString(output);
        System.out.println("Result: " + result);

    }
}

运行TestJson后你会看到预期的结果

 Input: {"key":"my key","value":"my value","element":"X"}
Result: {"key":"my key","value":"my value","element":["X"]}

【讨论】:

  • 只是对上述内容的补充,有两个主要的库可用于实现此目的。如上所述的杰克逊和 Gson。两者都有能力实现相同的目标,并且通常两者之间的选择取决于您要实现的目标的上下文。也许你会因为两者的知识而获得额外的荣誉?
猜你喜欢
  • 2012-07-21
  • 2020-10-02
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多