Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将json字符串转换为对象_Java_Json - Fatal编程技术网

Java 如何将json字符串转换为对象

Java 如何将json字符串转换为对象,java,json,Java,Json,这是我的pojo public class Data{ List<Object> objects; String owneruid; } 这样我就可以无忧无虑地皈依 这是我的输出 { "object":"[{\"p1\":32,\"p3\":470,\"p3\":\"213\",\"p4\":\"name\"}]"

这是我的pojo

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(值));
返回图;
}

Use
Jackson
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;
}