Преобразование XML в JSON правильный формат

Я знаю, что тип вопроса, который я собираюсь задать, задается много раз, но там все еще я упал, мой вопрос отличается, потому что я не могу найти правильный ответ,

Мне нужно скрыть строку XML в формат JSON

Мой формат XML выглядит как

<employee>
<empId>1</empId>
<address>India</address>
</employee>

У меня нет класса employee со мной, и этот корневой тег может быть чем угодно в следующий раз, поэтому я использую синтаксический анализ xml для формирования XML, а затем покрываю строку xml в JSON

JSONObject xmlJSONObj = XML.toJSONObject(data);
String jsonPreetyPrintString = xmlJSONObj.toString(1);
response = jsonPreetyString;

и мой выход JSON coming как это

{"employee":{
"empId":1,
"address":"India"
}
}

Но, я ожидаю, что мой выход будет выглядеть так

{
 "empId":1,
 "address":"India"
}

Пожалуйста, предложите мне, каким образом я могу достичь этого .

1 ответ

  1. Если имя корневого элемента известно, например, имя класса, можно просто использовать jsonobject#getJSONObject:

    http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JSONObject.html#getJSONObject(java.lang.String)

    @Test
    public void testJSON() throws JSONException {
        JSONObject jsonObj = new JSONObject().put("A", new JSONObject().put("a", 1).put("b", 5));
    
        String[] fieldNames = JSONObject.getNames(jsonObj);
        String key = fieldNames[0];
    
        System.out.println(jsonObj); // {"A":{"a":1,"b":5}}
        System.out.println(jsonObj.getJSONObject(key)); // {"a":1,"b":5}
    }
    
    private class A {
        private int a = 1; 
        private int b = 2;
    }