- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用一个提供以下输出的 REST 接口(interface)(准确地说,我想检索 TAF 元素列表):
<?xml version="1.0" encoding="UTF-8"?>
<response xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XML-Schema-instance" version="1.2" xsi:noNamespaceSchemaLocation="http://aviationweather.gov/adds/schema/taf1_2.xsd">
<request_index>32084191</request_index>
<data_source name="tafs" />
<request type="retrieve" />
<errors />
<warnings />
<time_taken_ms>13</time_taken_ms>
<data num_results="4">
<TAF>
<raw_text>TAF EPGD 171130Z 1712/1812 25008KT CAVOK PROB40 1718/1806 1500 BR BKN005</raw_text>
<station_id>EPGD</station_id>
<issue_time>2017-10-17T11:30:00Z</issue_time>
<bulletin_time>2017-10-17T11:00:00Z</bulletin_time>
<valid_time_from>2017-10-17T12:00:00Z</valid_time_from>
<valid_time_to>2017-10-18T12:00:00Z</valid_time_to>
<latitude>54.37</latitude>
<longitude>18.47</longitude>
<elevation_m>138.0</elevation_m>
<forecast>
<fcst_time_from>2017-10-17T12:00:00Z</fcst_time_from>
<fcst_time_to>2017-10-18T12:00:00Z</fcst_time_to>
<wind_dir_degrees>250</wind_dir_degrees>
<wind_speed_kt>8</wind_speed_kt>
<visibility_statute_mi>6.21</visibility_statute_mi>
<wx_string>NSW</wx_string>
<sky_condition sky_cover="NSC" />
</forecast>
<forecast>
<fcst_time_from>2017-10-17T18:00:00Z</fcst_time_from>
<fcst_time_to>2017-10-18T06:00:00Z</fcst_time_to>
<change_indicator>PROB</change_indicator>
<probability>40</probability>
<visibility_statute_mi>0.93</visibility_statute_mi>
<wx_string>BR</wx_string>
<sky_condition sky_cover="BKN" cloud_base_ft_agl="500" />
</forecast>
</TAF>
<TAF>
<raw_text>TAF EPGD 170530Z 1706/1806 22010KT 0300 FG BKN002 BECMG 1707/1709 CAVOK</raw_text>
<station_id>EPGD</station_id>
<issue_time>2017-10-17T05:30:00Z</issue_time>
<bulletin_time>2017-10-17T05:00:00Z</bulletin_time>
<valid_time_from>2017-10-17T06:00:00Z</valid_time_from>
<valid_time_to>2017-10-18T06:00:00Z</valid_time_to>
<latitude>54.37</latitude>
<longitude>18.47</longitude>
<elevation_m>138.0</elevation_m>
<forecast>
<fcst_time_from>2017-10-17T06:00:00Z</fcst_time_from>
<fcst_time_to>2017-10-17T07:00:00Z</fcst_time_to>
<wind_dir_degrees>220</wind_dir_degrees>
<wind_speed_kt>10</wind_speed_kt>
<visibility_statute_mi>0.19</visibility_statute_mi>
<wx_string>FG</wx_string>
<sky_condition sky_cover="BKN" cloud_base_ft_agl="200" />
</forecast>
<forecast>
<fcst_time_from>2017-10-17T07:00:00Z</fcst_time_from>
<fcst_time_to>2017-10-18T06:00:00Z</fcst_time_to>
<change_indicator>BECMG</change_indicator>
<time_becoming>2017-10-17T09:00:00Z</time_becoming>
<wind_dir_degrees>220</wind_dir_degrees>
<wind_speed_kt>10</wind_speed_kt>
<visibility_statute_mi>6.21</visibility_statute_mi>
<wx_string>NSW</wx_string>
<sky_condition sky_cover="NSC" />
</forecast>
</TAF>
<TAF>
<raw_text>TAF EPGD 162330Z 1700/1724 24006KT 7000 SCT012 TEMPO 1700/1708 BKN005 PROB40 1702/1707 1000 BR OVC002</raw_text>
<station_id>EPGD</station_id>
<issue_time>2017-10-16T23:30:00Z</issue_time>
<bulletin_time>2017-10-16T23:00:00Z</bulletin_time>
<valid_time_from>2017-10-17T00:00:00Z</valid_time_from>
<valid_time_to>2017-10-18T00:00:00Z</valid_time_to>
<latitude>54.37</latitude>
<longitude>18.47</longitude>
<elevation_m>138.0</elevation_m>
<forecast>
<fcst_time_from>2017-10-17T00:00:00Z</fcst_time_from>
<fcst_time_to>2017-10-17T08:00:00Z</fcst_time_to>
<change_indicator>TEMPO</change_indicator>
<sky_condition sky_cover="BKN" cloud_base_ft_agl="500" />
</forecast>
<forecast>
<fcst_time_from>2017-10-17T00:00:00Z</fcst_time_from>
<fcst_time_to>2017-10-18T00:00:00Z</fcst_time_to>
<wind_dir_degrees>240</wind_dir_degrees>
<wind_speed_kt>6</wind_speed_kt>
<visibility_statute_mi>4.35</visibility_statute_mi>
<sky_condition sky_cover="SCT" cloud_base_ft_agl="1200" />
</forecast>
<forecast>
<fcst_time_from>2017-10-17T02:00:00Z</fcst_time_from>
<fcst_time_to>2017-10-17T07:00:00Z</fcst_time_to>
<change_indicator>PROB</change_indicator>
<probability>40</probability>
<visibility_statute_mi>0.62</visibility_statute_mi>
<wx_string>BR</wx_string>
<sky_condition sky_cover="OVC" cloud_base_ft_agl="200" />
</forecast>
</TAF>
<TAF>
<raw_text>TAF EPGD 161730Z 1618/1718 24006KT CAVOK BECMG 1618/1620 BKN013 TEMPO 1621/1708 BKN005 PROB40 1700/1707 2000 BR OVC002 BECMG 1709/1711 SCT030</raw_text>
<station_id>EPGD</station_id>
<issue_time>2017-10-16T17:30:00Z</issue_time>
<bulletin_time>2017-10-16T17:00:00Z</bulletin_time>
<valid_time_from>2017-10-16T18:00:00Z</valid_time_from>
<valid_time_to>2017-10-17T18:00:00Z</valid_time_to>
<latitude>54.37</latitude>
<longitude>18.47</longitude>
<elevation_m>138.0</elevation_m>
<forecast>
<fcst_time_from>2017-10-16T18:00:00Z</fcst_time_from>
<fcst_time_to>2017-10-17T18:00:00Z</fcst_time_to>
<wind_dir_degrees>240</wind_dir_degrees>
<wind_speed_kt>6</wind_speed_kt>
<visibility_statute_mi>6.21</visibility_statute_mi>
<wx_string>NSW</wx_string>
<sky_condition sky_cover="NSC" />
</forecast>
<forecast>
<fcst_time_from>2017-10-16T18:00:00Z</fcst_time_from>
<fcst_time_to>2017-10-17T09:00:00Z</fcst_time_to>
<change_indicator>BECMG</change_indicator>
<time_becoming>2017-10-16T20:00:00Z</time_becoming>
<wind_dir_degrees>240</wind_dir_degrees>
<wind_speed_kt>6</wind_speed_kt>
<visibility_statute_mi>6.21</visibility_statute_mi>
<wx_string>NSW</wx_string>
<sky_condition sky_cover="BKN" cloud_base_ft_agl="1300" />
</forecast>
<forecast>
<fcst_time_from>2017-10-16T21:00:00Z</fcst_time_from>
<fcst_time_to>2017-10-17T08:00:00Z</fcst_time_to>
<change_indicator>TEMPO</change_indicator>
<sky_condition sky_cover="BKN" cloud_base_ft_agl="500" />
</forecast>
<forecast>
<fcst_time_from>2017-10-17T00:00:00Z</fcst_time_from>
<fcst_time_to>2017-10-17T07:00:00Z</fcst_time_to>
<change_indicator>PROB</change_indicator>
<probability>40</probability>
<visibility_statute_mi>1.24</visibility_statute_mi>
<wx_string>BR</wx_string>
<sky_condition sky_cover="OVC" cloud_base_ft_agl="200" />
</forecast>
<forecast>
<fcst_time_from>2017-10-17T09:00:00Z</fcst_time_from>
<fcst_time_to>2017-10-17T18:00:00Z</fcst_time_to>
<change_indicator>BECMG</change_indicator>
<time_becoming>2017-10-17T11:00:00Z</time_becoming>
<wind_dir_degrees>240</wind_dir_degrees>
<wind_speed_kt>6</wind_speed_kt>
<visibility_statute_mi>6.21</visibility_statute_mi>
<wx_string>NSW</wx_string>
<sky_condition sky_cover="SCT" cloud_base_ft_agl="3000" />
</forecast>
</TAF>
</data>
</response>
我的 POJO 类如下所示:
@XmlRootElement(name = "response")
public class Response {
@XmlElement private List<Taf> data; // I don't need any other contents of this element
public List<Taf> getData() {
return data;
}
public void setData(List<Taf> data) {
this.data = data;
}
}
@XmlRootElement(name = "TAF")
public class Taf {
@XmlElement(name = "raw_text") private String raw_text;
@XmlElement(name = "station_id") private String station_id; // ICAO
@XmlElement(name = "issue_time") private Date issue_time;
@XmlElement(name = "bulletin_time") private Date bulletin_time;
@XmlElement(name = "valid_time_from") private Date valid_time_from;
@XmlElement(name = "valid_time_to") private Date valid_time_to;
@XmlElement(name = "remarks") private String remarks;
@XmlElement(name = "latitude") private Double latitude;
@XmlElement(name = "longitude") private Double longitude;
@XmlElement(name = "elevation_m") private Double elevation_m;
@XmlElement(name = "forecast", type = Forecast.class) private List<Forecast> forecast;
// getters and setters
}
@XmlRootElement(name = "forecast")
public class Forecast {
@XmlElement(name = "fcst_time_from") private Date fcst_time_from;
@XmlElement(name = "fcst_time_to") private Date fcst_time_to;
@XmlElement(name = "wind_dir_degrees") private Integer wind_dir_degrees;
@XmlElement(name = "wind_speed_kt") private Integer wind_speed_kt;
@XmlElement(name = "visibility_statute_mi") private Double visibility_statute_mi;
@XmlElement(name = "wx_string") private String wx_string;
@XmlElement(name = "sky_condition", type = SkyCondition.class) private List<SkyCondition> sky_condition;
// getters and setters
}
@XmlRootElement(name = "sky_condition")
public class SkyCondition {
@XmlAttribute(name = "sky_cover") private String sky_cover;
@XmlAttribute(name = "cloud_base_ft_agl") private Integer cloud_base_ft_agl;
// getters and setters
}
现在我的服务有一个简单的方法:
public List<Taf> getTafsForICAO(String icao) {
RestTemplate restTemplate = new RestTemplate();
Response resp = restTemplate.getForObject(tafUrl+icao, Response.class);
return resp.getData();
}
如果我忽略嵌套的 forecast
元素,则所有内容都会正确解析。但我需要这些嵌套元素,如果我按原样运行所有内容,则会出现以下异常:
Failed to read HTTP message:
org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error:
Can not construct instance of airports.models.taf.Forecast:
no String-argument constructor/factory method to deserialize from String value ('2017-10-17T12:00:00Z'); nested exception is
com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of airports.models.taf.Forecast: no String-argument constructor/factory method to deserialize from String value ('2017-10-17T12:00:00Z')
at [Source: java.io.PushbackInputStream@4c723aba; line: 21, column: 45] (through reference chain: airports.models.taf.Response["data"]->java.util.ArrayList[0]->airports.models.taf.Taf["forecast"]->java.util.ArrayList[0])
看起来解析器看到了 forecast
的第一个子元素,即 fcst_time_from
获取了其内容并尝试将日期反序列化为 Forecast
目的。我不知道为什么。也许我错过了一些简单的事情?预先感谢您的帮助。
我离问题更近了一点。嵌套的 TAF
元素在 response
元素内正确解析,因为它们包装在 data
元素中。不幸的是,TAF
内没有用于forecast
标记列表的包装元素。我为 Forecast
类创建了一个带有 String 参数的构造函数,现在它将嵌入元素(fcst_time_from、fcst_time_to 等)解析为 Forecast
对象。有没有办法声明这个内部列表没有包装元素?
经过一些测试,我发现问题与解析未包装的元素列表严格相关。我不知道为什么,但如果我像这样声明我的 Result
类,而不是上面显示的声明:
@XmlRootElement(name = "response")
public class Response {
@XmlElementWrapper(name = "data")
@XmlElement(name = "TAF")
private List<Taf> tafs;
public List<Taf> getTafs() {
return tafs;
}
public void setTafs(List<Taf> tafs) {
this.tafs = tafs;
}
}
它不起作用。不解析任何 TAF 元素。解析器似乎强制所有列表都被包装。不幸的是,我在 REST 输出中得到了未包装的预测列表。我该如何处理这个问题?我看到了 @Element(inline = true)
注释的参数,但是 @XmlElement
没有这样的东西。我可以以某种方式强制在 RestTemplate 本身中展开列表吗?
最佳答案
经过两天的努力才发现我需要一条线来解决这个问题。所以...从解析器的角度来看,所有这些 @XmlElement
注释似乎都是无用的。仅当我想将对象作为 REST 服务输出时才使用它们。为了告诉解析器任何信息,我需要使用 @JacksonXmlElementWrapper 注释。具体解决办法是:
@XmlRootElement(name = "TAF")
public class Taf {
@XmlElement(name = "raw_text") private String raw_text;
@XmlElement(name = "station_id") private String station_id; // ICAO
@XmlElement(name = "issue_time") private Date issue_time;
@XmlElement(name = "bulletin_time") private Date bulletin_time;
@XmlElement(name = "valid_time_from") private Date valid_time_from;
@XmlElement(name = "valid_time_to") private Date valid_time_to;
@XmlElement(name = "remarks") private String remarks;
@XmlElement(name = "latitude") private Double latitude;
@XmlElement(name = "longitude") private Double longitude;
@XmlElement(name = "elevation_m") private Double elevation_m;
@JacksonXmlElementWrapper(useWrapping = false)
@XmlElement(name = "forecast") private List<Forecast> forecast;
// getters and setters
}
和
@XmlRootElement(name = "forecast")
public class Forecast {
@XmlElement(name = "fcst_time_from") private Date fcst_time_from;
@XmlElement(name = "fcst_time_to") private Date fcst_time_to;
@XmlElement(name = "wind_dir_degrees") private Integer wind_dir_degrees;
@XmlElement(name = "wind_speed_kt") private Integer wind_speed_kt;
@XmlElement(name = "visibility_statute_mi") private Double visibility_statute_mi;
@XmlElement(name = "ex_string") private String wx_string;
@JacksonXmlElementWrapper(useWrapping = false)
@XmlElement(name = "sky_condition") private List<SkyCondition> sky_condition;
// getters and setters
}
就是这样。
关于java - 使用 Spring Boot RestTemplate 解析嵌套元素会出现 JSON 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46794118/
我在网上搜索但没有找到任何合适的文章解释如何使用 javascript 使用 WCF 服务,尤其是 WebScriptEndpoint。 任何人都可以对此给出任何指导吗? 谢谢 最佳答案 这是一篇关于
我正在编写一个将运行 Linux 命令的 C 程序,例如: cat/etc/passwd | grep 列表 |剪切-c 1-5 我没有任何结果 *这里 parent 等待第一个 child (chi
所以我正在尝试处理文件上传,然后将该文件作为二进制文件存储到数据库中。在我存储它之后,我尝试在给定的 URL 上提供文件。我似乎找不到适合这里的方法。我需要使用数据库,因为我使用 Google 应用引
我正在尝试制作一个宏,将下面的公式添加到单元格中,然后将其拖到整个列中并在 H 列中复制相同的公式 我想在 F 和 H 列中输入公式的数据 Range("F1").formula = "=IF(ISE
问题类似于this one ,但我想使用 OperatorPrecedenceParser 解析带有函数应用程序的表达式在 FParsec . 这是我的 AST: type Expression =
我想通过使用 sequelize 和 node.js 将这个查询更改为代码取决于在哪里 select COUNT(gender) as genderCount from customers where
我正在使用GNU bash,版本5.0.3(1)-发行版(x86_64-pc-linux-gnu),我想知道为什么简单的赋值语句会出现语法错误: #/bin/bash var1=/tmp
这里,为什么我的代码在 IE 中不起作用。我的代码适用于所有浏览器。没有问题。但是当我在 IE 上运行我的项目时,它发现错误。 而且我的 jquery 类和 insertadjacentHTMl 也不
我正在尝试更改标签的innerHTML。我无权访问该表单,因此无法编辑 HTML。标签具有的唯一标识符是“for”属性。 这是输入和标签的结构:
我有一个页面,我可以在其中返回用户帖子,可以使用一些 jquery 代码对这些帖子进行即时评论,在发布新评论后,我在帖子下插入新评论以及删除 按钮。问题是 Delete 按钮在新插入的元素上不起作用,
我有一个大约有 20 列的“管道分隔”文件。我只想使用 sha1sum 散列第一列,它是一个数字,如帐号,并按原样返回其余列。 使用 awk 或 sed 执行此操作的最佳方法是什么? Accounti
我需要将以下内容插入到我的表中...我的用户表有五列 id、用户名、密码、名称、条目。 (我还没有提交任何东西到条目中,我稍后会使用 php 来做)但由于某种原因我不断收到这个错误:#1054 - U
所以我试图有一个输入字段,我可以在其中输入任何字符,但然后将输入的值小写,删除任何非字母数字字符,留下“。”而不是空格。 例如,如果我输入: 地球的 70% 是水,-!*#$^^ & 30% 土地 输
我正在尝试做一些我认为非常简单的事情,但出于某种原因我没有得到想要的结果?我是 javascript 的新手,但对 java 有经验,所以我相信我没有使用某种正确的规则。 这是一个获取输入值、检查选择
我想使用 angularjs 从 mysql 数据库加载数据。 这就是应用程序的工作原理;用户登录,他们的用户名存储在 cookie 中。该用户名显示在主页上 我想获取这个值并通过 angularjs
我正在使用 autoLayout,我想在 UITableViewCell 上放置一个 UIlabel,它应该始终位于单元格的右侧和右侧的中心。 这就是我想要实现的目标 所以在这里你可以看到我正在谈论的
我需要与 MySql 等效的 elasticsearch 查询。我的 sql 查询: SELECT DISTINCT t.product_id AS id FROM tbl_sup_price t
我正在实现代码以使用 JSON。 func setup() { if let flickrURL = NSURL(string: "https://api.flickr.com/
我尝试使用for循环声明变量,然后测试cols和rols是否相同。如果是,它将运行递归函数。但是,我在 javascript 中执行 do 时遇到问题。有人可以帮忙吗? 现在,在比较 col.1 和
我举了一个我正在处理的问题的简短示例。 HTML代码: 1 2 3 CSS 代码: .BB a:hover{ color: #000; } .BB > li:after {
我是一名优秀的程序员,十分优秀!