Переименование внутреннего элемента не может быть выполнено так же, как переименование элемента root, при преобразовании xml в json с использованием java - PullRequest
1 голос
/ 09 июля 2020

У меня есть следующий код:

import org.json.JSONObject;
import org.json.XML;

public class Xml2Json {
    
    public static void main(String[] args) {
        
        String xmlString = "<users><user name=test1 age=20></user><report sub=eng score=30></report></users>";
        JSONObject jsonObject = XML.toJSONObject(xmlString);
        
        jsonObject.put("employees", jsonObject.remove("users"));
        System.out.println(jsonObject); }}

Он дает результат, как показано ниже:

{"employees":{"report":{"sub":"eng","score":30},"user":{"name":"test1","age":20}}}.

Но когда я попытался переименовать 'report' в 'manual' в таким же образом

jsonObject.put("Manual", jsonObject.remove("report"));

Он не произвел ни одного канала на выходе.

мне нужен вывод:

{"employees":{"Manual":{"sub":"eng","score":30},"user":{"name":"test1","age":20}}}

1 Ответ

2 голосов
/ 09 июля 2020

Попробуйте следующее:

jsonObject.put("Manual", jsonObject.getJSONObject("users").remove("report"));

report вложено в users или employees. Итак, сначала вам нужно получить его объект root.

Обновить

Если вы хотите иметь json, как показано ниже

{"employees":{"Manual":{"sub":"eng","score":30},"user":{"name":"test1","age":20}}}

, тогда ваш код должен быть вот так:

jsonObject.getJSONObject("users")
        .put("Manual", jsonObject.getJSONObject("users").remove("report"));
jsonObject.put("employees", jsonObject.remove("users"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...