【问题标题】:convert json object into java object将json对象转换成java对象
【发布时间】:2015-02-11 07:24:02
【问题描述】:
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对象。这里 jsonObject 是 C 类的 json 表示。 我的问题是如果 java 对象包含 Map,如何将 json 对象转换为 Java 对象

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

【问题讨论】:

  • json 对象在哪里?
  • 这里的jsonObject是C类的json表示
  • 好吧,你有(不完整的)代码——它有效吗?
  • 这是我放在这里的示例代码,我的代码非常复杂,我不能放在这里,所以我制作了一个与我的问题相同的虚拟代码。
  • 我的问题是如果 java 对象包含 Map,如何将 json 对象转换为 Java 对象

标签: java json object


【解决方案1】:

我使用了 jackson 库,当一个 json 传递给 java 代码时,如果你想将该 json 解析为一个 java 对象,你需要一个包含 json 字符串中存在的所有属性的类.

例如:

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

将相当于一个包含两个属性的java类

class A {
 String firstname;
 String lastname;
}

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

喜欢

public void (A objectofA){

}

你从前端调用这个方法并使用 json 库传递一个 json 字符串,它会工作并且对你的工作有信心。

【讨论】:

    【解决方案2】:

    我不知道如何在“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
    

    【讨论】:

      【解决方案3】:

      我认为这行不通,因为 JSON 不能将任意对象表示为映射中的键。在 JSON 中,键必须是字符串。因此,在您的示例中,只有当 A 是 String 时 Map 才有效。

      那么你可以说:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 2023-03-17
        • 2012-08-29
        • 2012-05-29
        • 1970-01-01
        • 2020-09-29
        • 1970-01-01
        相关资源
        最近更新 更多