[Java] JSON को मानचित्र में कनवर्ट करें


Answers

मुझे google gson लाइब्रेरी पसंद है।
जब आप जेसन की संरचना नहीं जानते हैं। आप उपयोग कर सकते हैं

JsonElement root = new JsonParser().parse(jsonString);

और फिर आप जेसन के साथ काम कर सकते हैं। उदाहरण के लिए अपने जीसन से "value1" कैसे प्राप्त करें:

String value1 = root.getAsJsonObject().get("data").getAsJsonObject().get("field1").getAsString();
Question

JSON कोड को इस रूप में परिवर्तित करने का सबसे अच्छा तरीका क्या है:

{ 
    "data" : 
    { 
        "field1" : "value1", 
        "field2" : "value2"
    }
}

जावा मानचित्र में जिसमें एक कुंजी हैं (फ़ील्ड 1, फ़ील्ड 2) और उन फ़ील्ड के मान हैं (value1, value2)।

कोई विचार? क्या मुझे इसके लिए जेसन-लिब का उपयोग करना चाहिए? या बेहतर अगर मैं अपना खुद का पार्सर लिखूं?




गूगल के जीसन 2.7 (शायद पहले के संस्करण भी हैं, लेकिन मैंने 2.7 का परीक्षण किया) यह उतना आसान है जितना:

Map map = gson.fromJson(json, Map.class);

जो एक प्रकार का नक्शा class com.google.gson.internal.LinkedTreeMap और नेस्टेड ऑब्जेक्ट्स पर रिकर्सिव रूप से काम करता है।




Underscore-java लाइब्रेरी जेसन स्ट्रिंग को हैश मैप में परिवर्तित कर सकती है।

कोड उदाहरण:

import com.github.underscore.lodash.$;
import java.util.*;

public class Main {

    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
        String json = "{"
            + "    \"data\" :"
            + "    {"
            + "        \"field1\" : \"value1\","
            + "        \"field2\" : \"value2\""
            + "    }"
            + "}";

       Map<String, Object> data = (Map) $.get((Map<String, Object>) $.fromJson(json), "data");
       System.out.println(data);

       // {field1=value1, field2=value2}
    }
}



जेएसओएन हमेशा एक स्ट्रिंग / ऑब्जेक्ट डेटा प्रकार होने वाला है। मैंने Google से GSON lib को दाढ़ी दी।

बहुत अच्छी तरह से काम करता है और जेडीके 1.5 न्यूनतम आवश्यकता है।




JSON lib Eg का उपयोग करें http://www.json.org/java/

// Assume you have a Map<String, String> in JSONObject jdata
@SuppressWarnings("unchecked")
Iterator<String> nameItr = jdata.keys();
Map<String, String> outMap = new HashMap<String, String>();
while(nameItr.hasNext()) {
    String name = nameItr.next();
    outMap.put(name, jdata.getString(name));

}



जेसनटूल लाइब्रेरी बहुत पूर्ण है। यह Github पाया जा सकता है।




इस तरह यह एक मानचित्र की तरह काम करता है ...

JSONObject fieldsJson = new JSONObject(json);
String value = fieldsJson.getString(key);

<dependency>
    <groupId>org.codehaus.jettison</groupId>
    <artifactId>jettison</artifactId>
    <version>1.1</version>
</dependency>