Java 如何将json字符串转换为对象
这是我的pojoJava 如何将json字符串转换为对象,java,json,Java,Json,这是我的pojo public class Data{ List<Object> objects; String owneruid; } 这样我就可以无忧无虑地皈依 这是我的输出 { "object":"[{\"p1\":32,\"p3\":470,\"p3\":\"213\",\"p4\":\"name\"}]"
public class Data{
List<Object> objects;
String owneruid;
}
这样我就可以无忧无虑地皈依
这是我的输出
{
"object":"[{\"p1\":32,\"p3\":470,\"p3\":\"213\",\"p4\":\"name\"}]",
"owneruid":"6697729776330393738"
}
我正在将一个json字符串转换为字符串,因为它不接受json,所以当我像上面那样查询时返回,所以每次我需要获取值并将其转换为json对象并将其放入列表和显示中。你能给我建议一个更好的方法吗
当我尝试使用GSON将自定义类列表转换为json时
ArrayList<Object> list=new ArrayList<>();
Object object=new Object();
object.setP1(3);
object.setP2(4);
list.add(object);
Gson gson=new Gson();
String json = gson.toJson(list);
Required:
{"object":[{"p1":100,"p2":"name","p2":"sfa0","p4":300}],"owneruid":"owneruid"}
您可以使用下面的代码片段,因为它似乎适合您的情况。
ObjectMapper
可以在Jackson框架中找到inputJson
是您提到的JSON字符串
ObjectMapper mapper = new ObjectMapper();
Object mediaMetaDataObj = mapper.readValue( inputJson, Object.class );
希望这有帮助。您可以使用下面的代码片段,因为它似乎适合您的情况。
ObjectMapper
可以在Jackson框架中找到inputJson
是您提到的JSON字符串
ObjectMapper mapper = new ObjectMapper();
Object mediaMetaDataObj = mapper.readValue( inputJson, Object.class );
希望这有帮助。您必须使用任何
json
框架。例如Jackson
或Gson
。作为替代,你可以做smth。这样地。只需评估JavaScript
publicstaticvoidmain(String…args)抛出脚本异常{
ScriptEngine js=new ScriptEngineManager().getEngineByName(“javascript”);
Object obj=js.eval(“[{\'width\':313,\'height\':470,\'mediauid\':\'1521739327417\',\'mediatype\':\'image\'”);
//res是列表或映射
Object res=convertingtojavaobject(obj);
}
私有静态对象ConvertToJavaObject(对象obj){
if(!(ScriptObjectMirror的obj实例))
返回obj;
ScriptObjectMirror=(ScriptObjectMirror)obj;
if(mirror.isArray())
返回mirror.entrySet().stream()
.map(entry->convertinotoJavaObject(entry.getValue()))
.collect(Collectors.toList());
Map Map=newhashmap();
mirror.entrySet().forEach((键,值)->map.put(键,convertingtojavaobject(值));
返回图;
}
您必须使用任何json
框架。例如Jackson
或Gson
。作为替代,你可以做smth。这样地。只需评估JavaScript
publicstaticvoidmain(String…args)抛出脚本异常{
ScriptEngine js=new ScriptEngineManager().getEngineByName(“javascript”);
Object obj=js.eval(“[{\'width\':313,\'height\':470,\'mediauid\':\'1521739327417\',\'mediatype\':\'image\'”);
//res是列表或映射
Object res=convertingtojavaobject(obj);
}
私有静态对象ConvertToJavaObject(对象obj){
if(!(ScriptObjectMirror的obj实例))
返回obj;
ScriptObjectMirror=(ScriptObjectMirror)obj;
if(mirror.isArray())
返回mirror.entrySet().stream()
.map(entry->convertinotoJavaObject(entry.getValue()))
.collect(Collectors.toList());
Map Map=newhashmap();
mirror.entrySet().forEach((键,值)->map.put(键,convertingtojavaobject(值));
返回图;
}
UseJackson
frameworkSee可能重复的用法Jackson
frameworkSee可能重复的用法
ObjectMapper mapper = new ObjectMapper();
Object mediaMetaDataObj = mapper.readValue( inputJson, Object.class );
public static void main(String... args) throws ScriptException {
ScriptEngine js = new ScriptEngineManager().getEngineByName("javascript");
Object obj = js.eval("[{\"width\":313,\"height\":470,\"mediauid\":\"1521739327417\",\"mediatype\":\"image\"}]");
// res is either List<Object> or Map<String, Object>
Object res = convertIntoJavaObject(obj);
}
private static Object convertIntoJavaObject(Object obj) {
if (!(obj instanceof ScriptObjectMirror))
return obj;
ScriptObjectMirror mirror = (ScriptObjectMirror)obj;
if (mirror.isArray())
return mirror.entrySet().stream()
.map(entry -> convertIntoJavaObject(entry.getValue()))
.collect(Collectors.toList());
Map<String, Object> map = new HashMap<>();
mirror.entrySet().forEach((key, value) -> map.put(key, convertIntoJavaObject(value)));
return map;
}