对我来说这段代码:
public class Main { public static void main(String[] args) throws IOException { GsonBuilder builder = new GsonBuilder(); builder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES); Gson gson = builder.create(); FileInputStream inputStream = new FileInputStream(new File("bobi.json")); InputStreamReader reader = new InputStreamReader(inputStream); User user = gson.fromJson(reader, User.class); System.out.println(user.getName()); System.out.println(user.getId()); for (String property : user.getProperties().keySet()) { System.out.println("Key: " + property + " value: " + user.getProperties().get(property)); } reader.close();}打印此:
azerty123456789Key: p1 value: 1.0Key: p2 value: testKey: p3 value: [1.0, 2.0, 3.0, 4.0]Key: p4 value: {}但是,请记住,我在解析的文件中剥离了包装的json对象。该文件是:
{ "id":"123456789", "name" : "azerty", "emailHash":"123456789", "properties": { "p1":1, "p2":"test", "p3":[1, 2, 3, 4], "p4":{ } }}我还为
name和添加了结尾双引号
id,而您的示例中没有。
UserOP要求的班级。我出于打印的原因添加了getter和setter:
import java.util.Map;class User { private String id; private String name; private Map<String, Object> properties; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Map<String, Object> getProperties() { return properties; } public void setProperties(Map<String, Object> properties) { this.properties = properties; }}


