मेरे पास निम्नानुसार परिभाषित एक वर्ग है -

public class info {
  private final string name;
  private final string add;
  private final Map<String, Skill> skills;
}

public class Skill {
  String subCategory;
  String proficiency;
}

JSON as  -
{
   "name": "abc",
   "add": "random",
   "skills": {
     "java": {
       "subCategory": "soft",
       "proficiency": "A"
     }
    "C#": {
       "subCategory": "soft",
       "proficiency": "B"
     }
  }
}

मैं इस जेसन को जावा ऑब्जेक्ट जानकारी में कैसे परिवर्तित कर सकता हूं? मैंने जीसन लाइब्रेरी का उपयोग करने की कोशिश की है लेकिन कई त्रुटियों में चल रहा है।

मुद्दा एक वर्ग कौशल के अंदर मानचित्र की वजह से है। सुनिश्चित नहीं है कि कैसे परिवर्तित करें। मैंने उदाहरण देखा JSON को Java ऑब्जेक्ट में Gson का उपयोग करके कनवर्ट करना लेकिन इसकी बहुत आसान कोई सूची या कक्षा के अंदर नक्शा नहीं है।

-1
user1122 29 अक्टूबर 2018, 18:25

1 उत्तर

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

आपके कोड में कुछ त्रुटियां हैं, लेकिन इन्हें ठीक करने के बाद यह काम करता है।

  • आप स्ट्रिंग्स को String के बजाय string से परिभाषित करने का प्रयास कर रहे हैं
  • आप अपने वैरिएबल को info में final के रूप में परिभाषित कर रहे हैं, और आप उन्हें परिभाषित नहीं कर रहे हैं (फ़ाइनल कीवर्ड को हटाना काम करता है)
  • आप अपने JSON में अपने कौशल सरणी में एक , खो रहे हैं

नीचे एक उदाहरण है जो वास्तव में काम करता है:

public class Main {
    public static void main(String[] args) {
        String json = "{\r\n"
                + "   \"name\": \"abc\",\r\n"
                + "   \"add\": \"random\",\r\n"
                + "   \"skills\": {\r\n"
                + "     \"java\": {\r\n"
                + "       \"subCategory\": \"soft\",\r\n"
                + "       \"proficiency\": \"A\"\r\n"
                + "     },\r\n"
                + "    \"C#\": {\r\n"
                + "       \"subCategory\": \"soft\",\r\n"
                + "       \"proficiency\": \"B\"\r\n"
                + "     }\r\n"
                + "  }\r\n"
                + "}";

        Info info = new Gson().fromJson(json, Info.class);
        System.out.println(info.getSkills());
    }

}

class Info {
    private String name;
    private String add;
    private Map<String, Skill> skills;

    public String getName() {
        return this.name;
    }

    public String getAdd() {
        return this.add;
    }

    public Map<String, Skill> getSkills() {
        return this.skills;
    }
}

class Skill {
    String subCategory;
    String proficiency;
}

मैंने info से Info का नाम बदलने की स्वतंत्रता भी ली है क्योंकि वर्ग के नाम बड़े अक्षर से शुरू होने चाहिए और निजी चर के लिए गेटर्स जोड़े जाने चाहिए।

0
Mark 29 अक्टूबर 2018, 15:36