繁体   English   中英

将json对象转换为java对象

[英]convert json object into java object

class A{}

class B{}

class C{ 
       private Map<A,B> myMap;
   }

class Test{

public static void main(String [] args)
{ 
      Map classMap=new HashMap();
       classMap.put("myMap","?");
       C c = (C) JSONObject.toBean(jsonObject, C.class,classMap);
}

}

我使用“net.sf.json”库将json对象转换为java对象。在C类中有一个映射,所以如何将它转换为Java Object。 这里jsonObject是类C的json表示形式。我的问题是,如果java对象包含Map,如何将json对象转换为Java Object?

我是初学者,任何帮助都会非常感激。

我使用过杰克逊库,并且当将json传递给java代码时,如果您要将json解析为java对象,则需要具有一个包含json字符串中存在的所有属性的类。

例如:

jsonString=
{
 'firstname':'json',
 'lastname':'jack'
}

将等同于包含属性as的java类

class A {
 String firstname;
 String lastname;
}

因此,如果您接受来自前端的字符串作为A类的对象,它就可以工作

喜欢

public void (A objectofA){

}

然后从前端调用此方法,并使用json库传递json字符串,它将起作用并且对您的工作充满信心。

我不知道如何在“net.sf.json”中执行此操作尝试查看序列化在“net.sf.json”中的工作原理。 可能您可以从那里去。

这是使用杰克逊的方式,(其中一位评论者试图向您解释使用此方法的方法)

//you need to import:
//import org.codehaus.jackson.map.ObjectMapper;

ObjectMapper mapper = new ObjectMapper();
mapper.writeValueAsString(c) //--> This gives Json String

我认为这行不通,因为JSON无法将任意对象表示为地图中的键。 在JSON中,键必须是字符串。 因此,在您的示例中,Map仅在A为字符串的情况下才有效。

然后你可以说:

classMap.put("myMap",B.class);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM