- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Jersey REST 客户端 API 编写一个简单的地理编码应用程序,该应用程序利用了 OpenStreetMap/Mapquest Nominatim REST 服务。该调用返回类似于以下内容的 JSON 响应:
[ {
"place_id":"249137377",
"licence":"Data \u00a9 OpenStreetMap contributors, ODbL 1.0. http:\/\/www.openstreetmap.org\/copyright",
"boundingbox":["32.834854904644","32.834954904644","-79.243545952863","-79.243445952863"],
"lat":"32.8349049046436",
"lon":"-79.2434959528633",
"display_name":"9000, Maple Avenue, Bedford, Trimble County, Kentucky, 40006, United States of America",
"class":"place",
"type":"house",
"importance":0.521
} ]
如您所见,它包含一个名为 type
的字段。解码此 JSON 响应时,会引发以下异常:
Caused by: Exception [EclipseLink-43] (Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: Missing class for indicator field value [house] of type [class java.lang.String].
Descriptor: XMLDescriptor(com.edc.c2c.geospatial.nominatim.v1.model.impl.NominatimResponse --> [])
at org.eclipse.persistence.exceptions.DescriptorException.missingClassForIndicatorFieldValue(DescriptorException.java:940)
at org.eclipse.persistence.internal.oxm.QNameInheritancePolicy.classFromRow(QNameInheritancePolicy.java:266)
at org.eclipse.persistence.internal.oxm.TreeObjectBuilder.classFromRow(TreeObjectBuilder.java:182)
at org.eclipse.persistence.internal.oxm.TreeObjectBuilder.classFromRow(TreeObjectBuilder.java:1)
at org.eclipse.persistence.internal.oxm.record.UnmarshalRecordImpl.initializeRecord(UnmarshalRecordImpl.java:502)
at org.eclipse.persistence.internal.oxm.record.UnmarshalRecordImpl.startElement(UnmarshalRecordImpl.java:740)
at org.eclipse.persistence.internal.oxm.record.json.JSONReader.parseRoot(JSONReader.java:177)
at org.eclipse.persistence.internal.oxm.record.json.JSONReader.parseRoot(JSONReader.java:195)
at org.eclipse.persistence.internal.oxm.record.json.JSONReader.parse(JSONReader.java:125)
at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:972)
at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:425)
at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:635)
at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:703)
at org.eclipse.persistence.oxm.XMLUnmarshaller.unmarshal(XMLUnmarshaller.java:655)
at org.eclipse.persistence.jaxb.JAXBUnmarshaller.unmarshal(JAXBUnmarshaller.java:301)
at org.eclipse.persistence.jaxb.rs.MOXyJsonProvider.readFrom(MOXyJsonProvider.java:597)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:188)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:134)
at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:988)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:833)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:768)
at org.glassfish.jersey.client.InboundJaxrsResponse.readEntity(InboundJaxrsResponse.java:96)
at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:761)
... 31 more
我推测发生错误的原因是 type
被视为一种类鉴别器,而 house
被解释为子类而不是简单的字符串。
这是用于调用服务的代码:
public Coordinate lookup( StreetAddress a_StreetAddress )
{
LatLongCoordinate result = null ;
Client client = ClientBuilder.newClient() ;
client.register( MoxyXmlFeature.class ) ;
WebTarget target = client.target( this.getEndPointUrl() ) ;
NominatimResponse response =
target
.queryParam( "q", a_StreetAddress.format() ) // Buildup GET request
.queryParam( "format", "json" )
.queryParam( "addressdetails", "0" )
.queryParam( "limit", "1" )
.request( MediaType.APPLICATION_JSON_TYPE ) // Only accept JSON back in response
.buildGet()
.invoke( NominatimResponse.class )
;
if ( ( response != null ) && ( response.getLatitude() != null ) && ( response.getLongitude() != null ) ) {
result = new LatLongCoordinate( response.getLatitude(), response.getLongitude() ) ;
}
return result ;
}
这是我创建的 NominatimResponse
类,用于将响应解码到:
public class NominatimResponse extends AbstractGeospatialModelObject
{
private static final long serialVersionUID = -7514888439468843335L ;
@XmlElement( name = "place_id" )
private String m_PlaceId = null ;
@XmlElement( name = "license" )
private String m_License = null ;
@XmlElement( name = "osm_type" )
private String m_OsmType = null ;
@XmlElement( name = "osm_id" )
private String m_OsmId = null ;
@XmlElement( name = "bounding_box")
private Double[] m_BoundingBox = null ;
@XmlElement( name = "lat" )
private Double m_Latitude = null ;
@XmlElement( name = "lon" )
private Double m_Longitude = null ;
@XmlElement( name = "display_name" )
private String m_DisplayName = null ;
@XmlElement( name = "class" )
private String m_Classifier = null ;
@XmlElement( name = "type" )
private String m_Type = null ;
@XmlElement( name = "importance" )
private Double m_Importance = null ;
/**
* @return the placeId
*/
public String getPlaceId()
{
return this.m_PlaceId ;
}
/**
* @param a_placeId the placeId to set
*/
public void setPlaceId( String a_placeId )
{
this.m_PlaceId = a_placeId ;
}
/**
* @return the license
*/
public String getLicense()
{
return this.m_License ;
}
/**
* @param a_license the license to set
*/
public void setLicense( String a_license )
{
this.m_License = a_license ;
}
/**
* @return the osmType
*/
public String getOsmType()
{
return this.m_OsmType ;
}
/**
* @param a_osmType the osmType to set
*/
public void setOsmType( String a_osmType )
{
this.m_OsmType = a_osmType ;
}
/**
* @return the osmId
*/
public String getOsmId()
{
return this.m_OsmId ;
}
/**
* @param a_osmId the osmId to set
*/
public void setOsmId( String a_osmId )
{
this.m_OsmId = a_osmId ;
}
/**
* @return the boundingBox
*/
public Double[] getBoundingBox()
{
return this.m_BoundingBox ;
}
/**
* @param a_boundingBox the boundingBox to set
*/
public void setBoundingBox( Double[] a_boundingBox )
{
this.m_BoundingBox = a_boundingBox ;
}
/**
* @return the latitude
*/
public Double getLatitude()
{
return this.m_Latitude ;
}
/**
* @param a_latitude the latitude to set
*/
public void setLatitude( Double a_latitude )
{
this.m_Latitude = a_latitude ;
}
/**
* @return the longitude
*/
public Double getLongitude()
{
return this.m_Longitude ;
}
/**
* @param a_longitude the longitude to set
*/
public void setLongitude( Double a_longitude )
{
this.m_Longitude = a_longitude ;
}
/**
* @return the displayName
*/
public String getDisplayName()
{
return this.m_DisplayName ;
}
/**
* @param a_displayName the displayName to set
*/
public void setDisplayName( String a_displayName )
{
this.m_DisplayName = a_displayName ;
}
/**
* @return the classifier
*/
public String getClassifier()
{
return this.m_Classifier ;
}
/**
* @param a_classifier the classifier to set
*/
public void setClassifier( String a_classifier )
{
this.m_Classifier = a_classifier ;
}
/**
* @return the type
*/
public String getType()
{
return this.m_Type ;
}
/**
* @param a_type the type to set
*/
public void setType( String a_type )
{
this.m_Type = a_type ;
}
/**
* @return the importance
*/
public Double getImportance()
{
return this.m_Importance ;
}
/**
* @param a_importance the importance to set
*/
public void setImportance( Double a_importance )
{
this.m_Importance = a_importance ;
}
}
有没有办法阻止 MOXy 以它看起来的方式处理 type
?似乎它需要与 @XmlDiscriminatorNode
等相反。
预先感谢您的帮助。
最佳答案
我也遇到了同样的问题。我从 Moxy 换到 Jackson,因为 Jackson 似乎处理这个案子做得很好。
只需更改构建脚本中的 jersey-media 依赖项
// remove this
compile 'org.glassfish.jersey.media:jersey-media-moxy:2.13'
// add this
compile 'org.glassfish.jersey.media:jersey-media-json-jackson:2.13'
关于java - MOXy JAXB 异常, "type"字段被视为子类鉴别器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27295167/
假设a是张量,那么有什么区别: 类型(a) a.类型 a.type() 我找不到区分这些的文档。 最佳答案 type 是 python 内置方法。 它将返回对象的类型。喜欢 torch.Tensor.
什么是 Type 1 的居民的例子?两者都不是 Type也不是Type的居民?在 Idris REPL 中进行探索时,我无法想出任何东西。 更准确地说,我正在寻找一些 x除了 Type产生以下结果:
我找到了一些资源,但我不确定我是否理解。 我找到的一些资源是: http://help.sap.com/saphelp_nw70/helpdata/en/fc/eb2ff3358411d1829f00
这两个函数原型(prototype)有什么区别? void apply1(double(f)(double)); void apply2(double(*f)(double)); 如果目标是将提供的函
http://play.golang.org/p/icQO_bAZNE 我正在练习使用堆进行排序,但是 prog.go:85: type bucket is not an expression
假设有一个泛型定义的方法信息对象,即一个方法信息对象,这样的方法Info.IsGenericMethodDefinition==TRUE:。也可以说它们也有一个泛型参数列表:。我可以使用以下命令获取该
在具有依赖类型的语言中,您可以使用 Type-in-Type 来简化语言并赋予它很多功能。这使得语言在逻辑上不一致,但如果您只对编程感兴趣而不对定理证明感兴趣,这可能不是问题。 在 Cayenne
根据 Nim 手册,变量类型是“静态类型”,而变量在内存中指向的实际值是“动态类型”。 它们怎么可能是不同的类型?我认为将错误的类型分配给变量将是一个错误。 最佳答案 import typetrait
假设您有以下结构和协议(protocol): struct Ticket { var items: [TicketItem] = [] } struct TicketItem { } prot
我正在处理一个 EF 问题,我发现它很难调试...以前,在我的系统中有一个表类型继承设置管理不同的用户类型 - 所有用户共有的一种根类型,以及大致基于使用该帐户的人员类型的几种不同的子类型。现在,我遇
这是我的 DBManager.swift import RealmSwift class DBManager { class func getAllDogs() -> [Dog] {
我正在尝试使用傅里叶校正图像中的曝光。这是我面临的错误 5 padded = np.log(padded + 1) #so we never have log of 0 6 g
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
请考虑以下设置: protocol MyProcotol { } class MyModel: MyProcotol { } enum Result { case success(value:
好吧,我将我的 python 项目编译成一个可执行文件,它在我的电脑上运行,但我将它发送给几个 friend 进行测试,他们都遇到了这个错误。我以前从未见过这样的错误。我使用 Nuitka 来编译代码
当我尝试训练我的模型时"ValueError: Type must be a sub-type of ndarray type"出现在 line x_norm=(np.power(x,2)).sum(
我尝试在另一个类中打断、计数然后加入对象。所以我构建协议(protocol): typealias DataBreaker = () -> [Double] typealias DataJoiner
我正在使用 VS 2015 更新 3、Angular 2.1.2、Typescript 2.0.6 有人可以澄清什么是 typings 与 npm @types 以及本月很难找到的任何其他文档吗? 或
我正在考虑从 VS2010 更改为 Mono,因此我通过 MoMA 运行我的程序集,看看我在转换过程中可能遇到多少困难。在生成的报告中,我发现我不断收到此错误: bool Type.op_Equali
主要问题 不太确定这是否可能,但由于我讨厌 Typescript 并且它使我的编码变得困难,我想我会问只是为了确定。 interface ISomeInterface { handler: ()
我是一名优秀的程序员,十分优秀!