当它试图创建'Transacao'的实例时,我收到以下错误
`Error: Cannot construct br.com.cbmp.ecommerce.resposta.Transacao as it does not have a no-args constructor : Cannot construct br.com.cbmp.ecommerce.resposta.Transacao as it does not have a no-args constructor `
---- Debugging information ----
message : Cannot construct br.com.cbmp.ecommerce.resposta.Transacao as it does not have a no-args constructor
cause-exception : com.thoughtworks.xstream.converters.reflection.ObjectAccessException
cause-message : Cannot construct br.com.cbmp.ecommerce.resposta.Transacao as it does not have a no-args constructor `
class : br.com.cbmp.ecommerce.resposta.Transacao
required-type : br.com.cbmp.ecommerce.resposta.Transacao
path : /transacao
Run Code Online (Sandbox Code Playgroud)
我知道XStream 1.3.1和JDK7存在一个错误,但我目前正在使用XStream 1.3.1和JDK6.任何想法为什么这个错误仍在发生?
谢谢
如何删除Xstream 中的class ="Something"属性.
我使用带有注释的Xstream
我正在尝试使用xstream 1.4.2将xml转换为对象.它确实对我来说非常好,直到我将对象的类文件放在一个单独的包中,而不是主代码运行的位置.然后我得到一个CannotResolveClassException.我尝试过使用其他人推荐的setClassLoader方法,但这没有用.
Exception in thread "main" com.thoughtworks.xstream.mapper.CannotResolveClassException: result
at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:56)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:55)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:79)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:74)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:45)
at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:133)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1052)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1036)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:912)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:903)
at main.readClass(main.java:48)
at main.main(main.java:28)
Run Code Online (Sandbox Code Playgroud)
答案: xstream期望xml结构相对于它(对象)所源自的包.因此必须使用xstream.alias才能为xml结构添加别名.
xstream.alias("something", Something.class);
Run Code Online (Sandbox Code Playgroud)
否则xstream将期望"Something"在默认包中,而不是它所属的包.
我有一个需要序列化为XML的对象,其中包含以下字段:
List<String> tags = new List<String>();
Run Code Online (Sandbox Code Playgroud)
XStream将它串行化(在一些别名之后),如下所示:
<tags>
<string>tagOne</string>
<string>tagTwo</string>
<string>tagThree</string>
<string>tagFour</string>
</tags>
Run Code Online (Sandbox Code Playgroud)
这是可以的,但是我希望能够将这些<string>元素重命名为<tag>.我无法从XStream网站上的别名文档中看到一种明显的方法.我错过了一些明显的东西吗
在我的POJO中使用@XStreamOmitField似乎没有任何效果.带注释的字段仍然以xml或json表示形式公开.
@XStreamAlias("Pojo")
@Entity
public class Pojo {
private String name;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long key;
@XStreamOmitField
private String hidden;
public Pojo(String name, String hidden) {
this.name = name;
this.hidden = hidden;
}
}
Run Code Online (Sandbox Code Playgroud)
并在ServerResource中
@Get
public Pojo test() {
Pojo pj= new Pojo("hansi","hinter");
return pj;
}
Run Code Online (Sandbox Code Playgroud)
抓住我
<com.myComp.ORMTest.Pojo>
<name>hansi</name>
<hidden>hinter</hidden>
</com.myComp.ORMTest.Pojo>
Run Code Online (Sandbox Code Playgroud)
任何关于注释被忽略的想法?
我希望能够根据列表中包含的对象类型对根列表元素进行别名.例如,这是我当前的输出:
<list>
<coin>Gold</coin>
<coin>Silver</coin>
<coin>Bronze</coin>
</list>
Run Code Online (Sandbox Code Playgroud)
这就是我想要的样子:
<coins>
<coin>Gold</coin>
<coin>Silver</coin>
<coin>Bronze</coin>
</coins>
Run Code Online (Sandbox Code Playgroud)
我可以在全球范围内通过说所有列表应该别名为硬币来做到这一点,但我有很多不同的列表,这是行不通的.关于如何做到这一点的任何想法?看起来它应该很简单,但当然,事实并非如此.
编辑:我应该指定,我正在尝试将对象序列化为xml.我使用Spring 3 MVC作为我的Web框架.
如何使用XStream将对象列表转换为XML文档?
以及如何将其反序列化?
这是我的xml
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person>
<fullname>Guilherme</fullname>
<age>10</age>
<address>address,address,address,address,</address>
</person>
<person>
<fullname>Guilherme</fullname>
<age>10</age>
<address>address,address,address,address,</address>
</person>
</persons>
Run Code Online (Sandbox Code Playgroud)
Person bean包含3个字段如何使用自定义转换器将其转换回Bean List?
我目前使用一段XML,如下所示
<Person>
<Name>Frank Smith</Name>
<Id>100023412</Id>
<DOB>12/05/1954</DOB>
<LasLogin>01/09/2010</LasLogin>
<FavOS>Windows</FavOS> // Wild card that may occasionally appear
</Person>
Run Code Online (Sandbox Code Playgroud)
我坚持使用的是,当使用XStream时,我需要能够忽略出现的某些标签(在'FavOS'上面的情况下)这些标签可能未知或将来发生变化.有没有办法忽略所有与当前实现的不匹配的标签?
(使用XStream 1.3.1)
我有很多xml文件,我想使用XStream来管理它们.是否可以使用XStream生成与我的xml文件对应的java类?
我有以下XML:
<xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="CGImap 0.0.2">
<bounds minlat="48.1400000" minlon="11.5400000" maxlat="48.1450000" maxlon="11.5430000"/>
<node id="398692" lat="48.1452196" lon="11.5414971" user="Peter14" uid="13832" visible="true" version="18" changeset="10762013" timestamp="2012-02-22T18:59:41Z">
</node>
<node id="1956100" lat="48.1434822" lon="11.5487963" user="Peter14" uid="13832" visible="true" version="41" changeset="10762013" timestamp="2012-02-22T18:59:39Z">
<tag k="crossing" v="traffic_signals"/>
<tag k="highway" v="traffic_signals"/>
<tag k="TMC:cid_58:tabcd_1:Class" v="Point"/>
<tag k="TMC:cid_58:tabcd_1:Direction" v="positive"/>
<tag k="TMC:cid_58:tabcd_1:LCLversion" v="9.00"/>
<tag k="TMC:cid_58:tabcd_1:LocationCode" v="35356"/>
<tag k="TMC:cid_58:tabcd_1:NextLocationCode" v="35357"/>
<tag k="TMC:cid_58:tabcd_1:PrevLocationCode" v="35355"/>
</node>
</osm>
Run Code Online (Sandbox Code Playgroud)
我只是想将元素(节点)映射到一个对象,但我遇到了问题:
nodes都有tags这样的问题.java ×10
xstream ×10
xml ×2
alias ×1
annotations ×1
attributes ×1
class ×1
collections ×1
constructor ×1
list ×1
restlet ×1