java json 通用对象_如何将JSON读取到Java中的通用对象列表? - java

我必须从Web服务获取数据,我正在使用Jackson,但在使用Gson时遇到了同样的问题,单个对象没有问题,但是当我收到多个对象列表时,这对我来说并不那么容易。

收到的JSON如下所示:

{"country":

[

{"code":"AD","nombre":"Andorra","name":"Andorra"},

{"code":"AE","nombre":"Emiratos Árabes Unidos","name":"United Arab Emirates"}

]

}

这是我自己的类CountryWSType的列表,我有几个这样的类,需要一种可以获取任何类型列表的方法。

我试着像列表一样解析它:

List myObjects = mapper.readValue(jsonInput, mapper.getTypeFactory().constructCollectionType(List.class, MyClass.class));

还尝试创建自己的列表类型:

public class ListWSType implements List{

private List listaInterna;

//implents methods

}

但是我总会得到一个JsonMappingException,而且我对如何操作没有更多的想法。

我希望有一个人可以帮助我。

有人问这是我试图从JSON解析的类:

@XmlRootElement(name="country")

@XmlType(propOrder={"code", "nombre", "name"})

public class CountryWSType {

/** Código ISO */

@XmlElement(name="code")

public String code;

/** Nombre en español */

@XmlElement(name="nombre")

public String nombre;

/** Nombre en inglés */

@XmlElement(name="name")

public String name;

/** Constructor sin parámetros. No inicializa nada...

* Está para que funcione el marshall/unmarshall.

*/

public CountryWSType() {}

}

还请注意,比起我放MyClass时,它意味着CountryWSType类,对于您的误解感到抱歉。

java大神给出的解决方案

可能这会有所帮助:

//first convert input string to json array

JSONObject jsonobject = new JSONObject(countriesAsJsonString);

JSONArray jsonArray = jsnobject.getJSONArray("countries");

//then get the type for list and parse using gson as

Type listType = new TypeToken>(){}.getType();

List countriesList = new Gson().fromJson(jsonArray, listType);

如果您说您的json arrary元素可以是不同的类型,则映射器将不知道要实例化哪种类型的类,并且您将需要在json中提供其他属性来表明这一点,特别是如果json是外部的,则这是一种丑陋的方法面对。但是,如果这是您想要的,那么它会在this SO post中进行解释。

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…Java-如何将此字符串转换为日期? - java

我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…java.net.URI.create异常 - java

java.net.URI.create("http://adserver.adtech.de/adlink|3.0") 抛出java.net.URISyntaxException: Illegal character in path at index 32: http://adserver.adtech.de/adlink|3.0 虽然n…从方法返回数组-Java - java

private static Coordinate[] getCircleCoordintaes() { Coordinate coordinates[] = {new Coordinate(0, 0)}; return coordinates; } 以上程序工作正常。在上面的程序中,返回的坐标数组首先初始化了数组使用这条线Coordinate coordi…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值