2

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

我试图应用这个例子

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”以及我如何得到第二个?

4

1 回答 1

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
于 2013-12-08T19:15:29.207 回答