当前位置: 首页 > 知识库问答 >
问题:

无法通过webclient解析Google geocode json对象

伍嘉
2023-03-14

我尝试调用以下webclient查询:

    return webClient
            .get()
            .uri(uriBuilder -> uriBuilder
                    .path("/geocode/json")
                    .queryParam("key", google.getApiKey())
                    .queryParam("latlng", String.join(
                            ",",
                            String.valueOf(point.getLat()),
                            String.valueOf(point.getLng()))
                            )
                    .build())
            .accept(MediaType.APPLICATION_JSON)
            .retrieve()
            .onStatus(HttpStatus::isError, RestErrorHandler::manageError)
            .bodyToMono(*PlacesSearchResponse.class*);

谷歌返回的REST操作(https://developers.google.com/maps/documentation/geocoding/overview#GeocodingResponses)以下目标:

    {
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "1600",
               "short_name" : "1600",
               "types" : [ "street_number" ]
            }            
         ],
         "formatted_address" : "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA",
         "geometry" : {
            "location" : {
               "lat" : 37.4224764,
               "lng" : -122.0842499
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 37.4238253802915,
                  "lng" : -122.0829009197085
               },
               "southwest" : {
                  "lat" : 37.4211274197085,
                  "lng" : -122.0855988802915
               }
            }
         },
         "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA",
         "plus_code": {
            "compound_code": "CWC8+W5 Mountain View, California, United States",
            "global_code": "849VCWC8+W5"
         },
         "types" : [ "street_address" ]
      }
   ],
   "status" : "OK"
}

问题是我无法将其解析到我的类中:PlacesSearchResponse。班

    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public class PlacesSearchResponse {
    
        public String status;
        public String errorMessage;
        
    
        @JsonProperty(value = "results")
        public List<PlacesSearchResult> results;
    
    
    
    }

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class PlacesSearchResult implements  Serializable{
    
    private static final long serialVersionUID = 1L; 

    @JsonProperty(value = "address_components")
    public AddressComponent addressComponents[];
}

    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public class AddressComponent implements Serializable {
    
        private static final long serialVersionUID = 1L;
        public String longName;
        public String shortName;
    

        @JsonProperty(value = "types")
        public String[] types;
    
    
    }

我找不到任何错误和webClient是确定的,因为当我尝试体ToMono(String.class)然后我看到这个对象正确。

共有2个答案

常海
2023-03-14

最后,我有以下对象调用

.bodyToMono(PlacesSearchResponse.class);


@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class PlacesSearchResponse {

public String status;
public String errorMessage;

List <PlacesSearchResult> results;

}


@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class PlacesSearchResult implements  Serializable{

@JsonProperty("place_id")
String placeId;

@JsonProperty("address_components")
List<AddressComponent> addressComponents;

@JsonProperty("formatted_address")
String formattedAddress;
武骁
2023-03-14

我认为应该将其解析为一个数组,所以请执行以下操作:

...
.bodyToMono(PlacesSearchResponse[].class);
 类似资料:
  • 我希望有人能帮我解决这个问题。 我想用WebClient创建一个Rest客户端,从API中检索响应。所以我创建了我的Spring项目,添加了webflux、lombok和h2。我还创建了一个DTO类“CashAccount”和以下方法: 当我使用“.bodyToMono(String.class)”时,所有的功能都很好,我收到了结果: 相反,当我使用“.bodyToMono(cashcount.c

  • 问题内容: 我在使用jQuery / Ajax / JSON时遇到问题。我正在使用像这样的jQuery ajax帖子… 据我了解,这将返回一个JavaScript JSON对象?Ajax发布产生的文本是这样的(我相信这是有效的JSON)… 我似乎无法弄清楚如何解析jQuery ajax帖子返回的JSON对象…基本上,我想循环遍历并像这样返回每个学生组成一个div … 我似乎无法弄清楚该怎么做… 谢

  • 关于Spring WebFlow WebClient的小问题,尤其是如何配置一个使用TLSv1.2发送出站请求的问题。 我的应用程序是Spring WebFlow 2.4.2,其中启用了HTTP/2、SSL、mTLS和TLSv1.3。 注意它是TLSv1。3,而不是设置上的TLSv1,2。 创建WebClient实例时: 并使用它向TLSv1发送请求。3启用服务器,工作正常,非常开心。 但是,我需

  • 我认为的服务不可用。 : 谁能帮忙?

  • 我试图用vscode运行这个java程序,但它在第2行(import java.util.ArrayList无法解析为java(268435846))和第6行显示了一个错误。但它在在线编译器中给出了正确的输出。有什么建议吗?

  • 本文向大家介绍通过实例解析javascript Date对象属性及方法,包括了通过实例解析javascript Date对象属性及方法的使用技巧和注意事项,需要的朋友参考一下 日常生活中,各种形式的时间字符到处都是。时间观念的产生,时间单位、计时工具的发明,给人类带来的变化实在一言难尽。今天就来谈谈日期那些事儿。一起来看看 JavaScript 中的日期对象 Date。 获取月份天数 Date 第