教程列表
开源项目
知识点
相关文章
更多最近更新
更多XStream处理JSON
2019-04-27 16:36|来源: 网路
XStream支持JSON通过初始化XStream对象适当的驱动程序。 XStream目前支持JettisonMappedXmlDriver和JsonHierarchicalStreamDriver。
现在,让我们使用XStream处理JSON的代码测试。
创建一个Java类名为XStreamTester文件在 C:\>XStream_WORKSPACE\com656463\xstream.
File: XStreamTester.java
package com656463.xstream; import java.io.Writer; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver; import com.thoughtworks.xstream.io.json.JsonWriter; public class XStreamTester { public static void main(String args[]){ XStreamTester tester = new XStreamTester(); XStream xstream = new XStream(new JsonHierarchicalStreamDriver() { public HierarchicalStreamWriter createWriter(Writer writer) { return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE); } }); Student student = new Student("Mahesh","Parashar"); xstream.setMode(XStream.NO_REFERENCES); xstream.alias("student", Student.class); System.out.println(xstream.toXML(student)); } } @XStreamAlias("student") class Student { private String firstName; private String lastName; public Student(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } public String toString(){ return "Student [ firstName: "+firstName+", lastName: "+ lastName+ " ]"; } }
验证结果
使用javac编译器编译如下类:
C:\XStream_WORKSPACE\com656463\xstream>javac XStreamTester.java
现在运行XStreamTester看到的结果:
C:\XStream_WORKSPACE\com656463\xstream>java XStreamTester
验证输出
{ "firstName": "Mahesh", "lastName": "Parashar" }
相关问答
更多-
在XStream中,有一种更好的方法可以在JSON和Java中对
- 对象进行编组/解组(In XStream is there a better way to marshall/unmarshall List
我同意XStream不太适合 - 这是一个OXM(对象/ Xml映射器),JSON作为使用XML处理路径的辅助输出格式处理。 这就是为什么需要“约定”(如何将层次结构xml模型转换为json的对象图模型,反之亦然); 你的选择归结为使用最不利于次优选择的任何东西。 如果XML是您的主要数据格式,那就好了,您只需要一些基本的JSON(类似)支持。 为了获得良好的JSON支持,我会考虑使用一个JSON处理库来实现真正的OJM映射(我还假设Svenson也是如此),比如: 杰克逊 谷歌,GSON 另外:即使您确实 ... -
似乎我刚刚发现了这个问题。 当我做一个Toolkit.getDefaultToolkit(); 在我的测试类的构造函数或静态初始化程序中,它不会再挂起。 我不确定这样做的原因,但是当XStream尝试初始化一个awt类时, System.loadLibrary("awt")似乎是在错误的线程上或错误的类加载器上完成的。 Seems I just found the problem. When I do a Toolkit.getDefaultToolkit(); in the constructor or ...
-
当你给pad填充一个零的数字时,java会将数字视为八进制数。 八进制数字只能有以下数字:0,1,2,3,4,5,6和7.数字8和9不能用于八进制数字。 您指定的数字是01008,因此它会抛出NumberFormatException。 When you left pad a number with a single zero java considers the number a octal number. Octal numbers can only have the following digits: ...
-
您需要codehaus的jettison.jar 点击此链接 You need jettison.jar from codehaus click this link
-
XStream性能查询(XStream performance query)[2022-12-03]
由于XStream对象是线程安全的,因此您无需为每次转换实例化XStream。 XStream的初始实例化/配置非常耗时,因此在类中将实例定义为静态是一件好事: private static final XStream XSTREAM; static { XSTREAM = new XStream(); XSTREAM.aliasPackage(...); //Other configurations } You don't need t ... -
在这里找到答案。 有很多部分和不良信息,但这篇文章已经完成。 将库/ JAR添加到Eclipse Android项目中 Found the answer here. There is alot of partial and bad information out there but this post is complete. Adding a library/JAR to an Eclipse Android project
-
基本XStream注释(Basic XStream Annotations)[2022-05-20]
我的类路径上的其他jar之一是使用旧版本的XStream。 解决此问题的方法:项目属性> Java构建路径>订单和导出 从那里只需将jar移动到列表的顶部,Eclipse就会获取正确版本的jar。 One of the other jars on my classpath was using an older version of XStream. To fix the problem: Project Properties > Java Build Path > Order and Export From ... -
您需要注册一个自定义JavaBeanConverter,看看这里的单元测试: https : //fisheye.codehaus.org/browse/xstream/tags/XSTREAM_1_1_3/xstream/src/test/com/thoughtworks/xstream/converters/javabean /JavaBeanConverterTest.java?r=554 XStream xstream = new XStream(); xstream.registerConvert ...
-
XStream使用与JDK序列化相同的机制。 使用具有优化反射API的增强模式时,它不会调用默认构造函数。 解决方案是实现readResolve方法,如下所示: public class SomeClass{ private Set
blah; public SomeClass(){ // do stuff } public Set getBlah(){ return blah; } pri ... -
注释的正确位置在Profile类中: @JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.WRAPPER_OBJECT) public class Profile extends Element implements Serializable { 而json现在看起来像: {"Profile":{ ... }} 并且返回类型是子类列表: public class ProfileList extends ArrayList