簡體   English   中英

使用 gson 將 json 轉換為 json 對象

[英]convert json to json object using gson

我有一個定義如下的類 -

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 庫,但遇到多個錯誤。

問題是因為地圖里面有一個類技能。 不知道怎么轉換。 我查看了使用 Gson 將 JSON 轉換為 Java 對象的示例,但它非常簡單,在類中沒有列表或映射。

您的代碼有一些錯誤,但在修復這些錯誤后它確實可以工作。

  • 您正在嘗試使用string而不是String來定義字符串
  • 您將info的變量定義為final ,並且您沒有定義它們(刪除 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因為類名應該以大寫字母開頭並為私有變量添加 getter。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM