Java 使用gson将json转换为json对象
我有一个定义如下的类-Java 使用gson将json转换为json对象,java,java-8,gson,Java,Java 8,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":
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 as-
{
“名称”:“abc”,
“添加”:“随机”,
“技能”:{
“java”:{
“子类别”:“软”,
“熟练程度”:“A”
}
“C#”:{
“子类别”:“软”,
“熟练程度”:“B”
}
}
}
如何将此json转换为java对象信息?我曾尝试使用gson库,但遇到多个错误
这个问题是因为地图里面有一个类的技能。不知道如何转换。
我看了一个例子
但是它非常简单,在类中没有列表或映射。代码中有一些错误,但是在修复这些错误后,它就可以工作了
- 您试图用
而不是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;
}
公共类主{
公共静态void main(字符串[]args){
字符串json=“{\r\n”
+“名称”:“abc\”,\r\n
+“\”添加“:\”随机“,\r\n”
+“\”技能\“:{\r\n”
+“\“java\”:{\r\n”
+“子类别”:“软的”,\r\n
+“\”熟练程度\“:\”A\“\r\n”
+}\r\n
+“\“C”\:{\r\n”
+“子类别”:“软的”,\r\n
+“\”熟练程度\“:\”B\“\r\n”
+“}\r\n”
+“}\r\n”
+ "}";
Info=new Gson().fromJson(json,Info.class);
System.out.println(info.getSkills());
}
}
班级信息{
私有字符串名称;
私有字符串添加;
私人地图技能;
公共字符串getName(){
返回此.name;
}
公共字符串getAdd(){
返回此文件。添加;
}
公共地图getSkills(){
归还这本书。技能;
}
}
课堂技能{
字符串子类别;
弦乐熟练程度;
}
我还将info
重命名为info
,因为类名应该以大写字母开头&为私有变量添加了getter