【问题标题】:Parsing JSON with Jettison使用 Jettison 解析 JSON
【发布时间】:2013-12-25 18:13:35
【问题描述】:

我想使用 Jettison 来解析 JSON 响应,以使它们在 XML 格式中保持一致。 到目前为止,我无法在解析部分进一步了解。

我尝试申请this example

JSONObject obj = new JSONObject({"Type":2,"Value":{"rsp":true,"id":"5B721163"}});
AbstractXMLStreamReader reader = new MappedXMLStreamReader(obj);

String s = reader.getName().getLocalPart();
String t = reader.getText();

reader.next();
String u = reader.getName().getLocalPart();
System.out.print(s+t+u);

所以我想知道为什么输出是“Type2Type”而不是“Type2Value”以及我如何得到第二个?

【问题讨论】:

    标签: java json jettison


    【解决方案1】:

    与 XML 一样,Jettison 假设您的 json 有一个根元素,.next() 事件类型包括:START_ELEMENT,END_ELEMENT,COMMENT...

    JSONObject obj = new JSONObject(
            "{\"root\": {\"Type\":2,\"Value\":{\"rsp\":true,\"id\":\"5B721163\"}}}");
    for (AbstractXMLStreamReader reader = new MappedXMLStreamReader(obj); reader
            .hasNext(); reader.next()) {
        String s = reader.getLocalName();
        String t = reader.getText();
        int evenType = reader.getEventType();
        System.out.println(String.format(
                    "Name: %s, text: %s, event type: %d", s, t, evenType));
    }
    

    给我:

    Name: root, text: null, event type: 7 (START_DOCUMENT)
    Name: root, text: null, event type: 1 (START_ELEMENT)
    Name: Type, text: 2, event type: 1
    Name: Type, text: 2, event type: 4 (CHARACTERS)
    Name: Type, text: null, event type: 2 (END_ELEMENT)
    Name: Value, text: null, event type: 1
    Name: rsp, text: true, event type: 1
    Name: rsp, text: true, event type: 4
    Name: rsp, text: null, event type: 2
    Name: id, text: 5B721163, event type: 1
    Name: id, text: 5B721163, event type: 4
    Name: id, text: null, event type: 2
    Name: Value, text: null, event type: 2
    Name: root, text: null, event type: 2
    

    【讨论】:

    • 出于同样的原因它只会在下面的xml中解析root1
    • StAXON 有一个虚拟根配置选项,请参阅 java.dzone.com/articles/staxon-json-stax As XML requires a single root element, but JSON documents often don’t have one, this is an important feature required to read and write existing JSON formats 我在 Jettison 项目中没有找到等效项
    猜你喜欢
    • 1970-01-01
    • 2018-06-30
    • 2010-10-25
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    相关资源
    最近更新 更多