मेरे पास इस तरह के संभावित नेस्टेड ऑब्जेक्ट के साथ एक जेसन स्ट्रिंग है:

{
    "stringTypeCode": "aaaaa",
    "choiceTypeCode1": {
        "option1": true,
        "option2": true
    },
    "choiceTypeCode2": {
        "option3": true,
        "option4": true
    }
}

मुझे नेस्टेड ऑब्जेक्ट्स को स्ट्रिंग्स के रूप में छोड़कर मानचित्र में कनवर्ट करने की आवश्यकता है:

stringTypeCode - aaaaa
choiceTypeCode1 - {"option1": true,"option2": true}
choiceTypeCode2 - {"option2": true,"option3": true}

क्या इसे सरल तरीके से किया जा सकता है, अधिमानतः बिना किसी पुस्तकालय के?

संपादित करें: या पुस्तकालय के साथ यदि कोई अन्य आसान तरीका नहीं है।

संपादित 2: मेरे पास वस्तुओं में चर नामों के साथ गुणों की एक चर संख्या है।

-4
neptune 7 नवम्बर 2018, 18:14

1 उत्तर

सबसे बढ़िया उत्तर

जोंस को एक मानचित्र या सामान्य जेसन संरचना में पार्स करें, key - value जोड़े पर पुनरावृति करें, फिर key - toJsonString(value) जोड़े से एक नया नक्शा बनाएं। value एक साधारण स्ट्रिंग, जेसन ऑब्जेक्ट, नंबर इत्यादि हो सकता है ...

एक साधारण जैक्सन ऑब्जेक्टमैपर के साथ:

String json = "YOUR JSON HERE";
ObjectMapper mapper = new ObjectMapper();
Iterator<Entry<String, JsonNode>> fields = mapper.readTree(json).fields();
Map<String, String> m = new HashMap<>();
while (fields.hasNext()) {
    Entry<String, JsonNode> field = fields.next();
    m.put(field.getKey(), mapper.writeValueAsString(field.getValue()));
}
m.entrySet().forEach(e -> System.out.println(e.getKey() + " - " + e.getValue()));

आपका उदाहरण पैदा करता है:

stringTypeCode - "aaaaa"
choiceTypeCode1 - {"option1":true,"option2":true}
choiceTypeCode2 - {"option3":true,"option4":true}
3
David Szalai 7 नवम्बर 2018, 15:49