Java 遍历JSON字符串并同时获取键和值

Java 遍历JSON字符串并同时获取键和值,java,json,Java,Json,我有一个字符串,我想遍历它: {“名字”:“约翰”,“姓氏”:“多伊”} 我想要键和值,因为键可以更改并且将是动态的 我尝试了许多方法来迭代并获取所有键和值,但都没有成功。您可以使用jackson库将字符串转换为映射: final String jsonString = "{\"First Name\":\"John\",\"Last Name\":\"Doe\"}\""

我有一个字符串,我想遍历它:

{“名字”:“约翰”,“姓氏”:“多伊”}

我想要键和值,因为键可以更改并且将是动态的


我尝试了许多方法来迭代并获取所有键和值,但都没有成功。

您可以使用jackson库将字符串转换为映射:

        final String jsonString = "{\"First Name\":\"John\",\"Last Name\":\"Doe\"}\"";
        final Map<String, Object> jsonObject = new ObjectMapper().readValue(jsonString, Map.class);
final String jsonString=“{\“First Name\”:“John\”,“Last Name\”:“Doe\”}\”;
final Map jsonObject=new ObjectMapper().readValue(jsonString,Map.class);

然后,您可以轻松地迭代键及其值。

许多选项之一是将
Gson
TypeAdapter
一起使用,并允许我假设的是使用动态键对
Person
对象进行编码和解码

静态类人物{
私有最终字符串名;
私有最终字符串lastName;
Person(字符串名、字符串名){
this.firstName=firstName;
this.lastName=lastName;
}
公共字符串getFirstName(){
返回名字;
}
公共字符串getLastName(){
返回姓氏;
}
}
静态类PersonTypeAdapter扩展了TypeAdapter{
私有最终字符串firstNameKey;
私有最终字符串lastNameKey;
PersonTypeAdapter(字符串firstNameKey、字符串lastNameKey){
this.firstNameKey=firstNameKey;
this.lastNameKey=lastNameKey;
}
@凌驾
public void write(JsonWriter out,Person值)抛出IOException{
out.beginObject()
.name(firstNameKey).value(value.firstName)
.name(lastNameKey).value(value.lastName)
.endObject();
}
@凌驾
公共人员读取(JsonReader in)引发IOException{
in.beginObject();
字符串firstNameValue=null;
字符串lastNameValue=null;
while(在.hasNext()中){
String key=in.nextName();
if(key.equals(firstNameKey)){
firstNameValue=in.nextString();
}else if(key.equals(lastNameKey)){
lastNameValue=in.nextString();
}否则{
抛出新的UnsupportedOperationException(“不支持的键”);
}
}
in.endObject();
if(firstNameValue==null | | lastNameValue==null){
抛出新的IllegalStateException(“名字或姓氏为null”);
}
返回新人员(firstNameValue、lastNameValue);
}
}
String json=“{\'First Name\':\'John\',\'Last Name\':\'Doe\'}\n”+
“\n”;
Gson Gson=new GsonBuilder()
.registerTypeAdapter(Person.class,新的PersonTypeAdapter(“名字”、“姓氏”))
.create();
Person-Person=gson.fromJson(json,Person.class);

“我已经尝试了很多迭代的方法”-确切地说是哪一种?我们需要知道如何建议您尚未尝试过的解决方案。谢谢大家。杰克逊图书馆发挥了神奇的作用。
Json result: com.Solution$Person@5f4da5c3[firstName=John,lastName=Doe]