精华内容
下载资源
问答
  • 只是一开始日志报xstream没有初始化。 目前仿照了几个demo写,都是这个问题。这个是在 Found kmodule: file:/E:/baiya/iot-ubilinkage-BackgroundManagementSystem/target/classes/META-INF/kmodule.xml 这...
  • XStream解析json初始化异常

    千次阅读 2021-03-08 11:02:36
    偶然间得知XStream这个框架,索性就写个小demo入门,没想到在解析json进行XStream初始化时,报错了。将报错信息及解决方案记录在此。 以下为xml序列化与反序列化 XStream xstream = new XStream(new StaxDriver());...

    在这里插入图片描述

    偶然间得知XStream这个框架,索性就写个小demo入门,没想到在解析json进行XStream初始化时,报错了。将报错信息及解决方案记录在此。

    以下为xml序列化与反序列化

            XStream xstream = new XStream(new StaxDriver());
            AccessToken accessToken = new AccessToken(1, "99999999999999999999999999999");
            // xml序列化
            String s = xstream.toXML(accessToken);
            System.out.println(s);
    
            // xml反序列化
            AccessToken a1 = (AccessToken)xstream.fromXML(s);
            System.out.println(a1.getId());
            System.out.println(a1.getToken());
    

    以下为json序列化与反序列化

            // 设置Json解析器
            XStream xStream = new XStream(new JettisonMappedXmlDriver());
            // 设置reference模型,不引用
            xStream.setMode(XStream.NO_REFERENCES);
            // 为类名节点重命名
            xStream.alias("微信token",AccessToken.class);
    
            String s1 = xStream.toXML(accessToken);
            System.out.println(s1);
            AccessToken o1 = (AccessToken) xStream.fromXML(s1);
            System.out.println(o1.getToken());
    

    重点是这步:XStream xStream = new XStream(new JettisonMappedXmlDriver());
    报错信息为:java.lang.NoClassDefFoundError: org/codehaus/jettison/mapped/Configuration
    原因是我少引入了依赖,一开始只引入了xstream:

    		<dependency>
                <groupId>com.thoughtworks.xstream</groupId>
                <artifactId>xstream</artifactId>
                <version>1.4.11.1</version>
            </dependency>
    

    需要再引入jettison

    		<dependency>
                <groupId>org.codehaus.jettison</groupId>
                <artifactId>jettison</artifactId>
                <version>1.3.7</version>
            </dependency>
    

    然后就可以解决了.

    展开全文
  • 我正在使用生成此类XML的系统:123 Main StreetSuite 123Test CityAA00000两个addressLine元素应该是XStream隐式集合的一部分 – 我想调用getAddressLine()方法并获取List< String>输出.我一直在使用XStream的...

    我正在使用生成此类

    XML的系统:

    123 Main Street

    Suite 123

    Test City

    AA

    00000

    两个addressLine元素应该是XStream隐式集合的一部分 – 我想调用getAddressLine()方法并获取List< String>输出.

    我一直在使用XStream的教程,并且还没有弄清楚如何正确映射addressLine元素.在XStream’s Tweaking Output tutorial中有类似的用例,但没有提供示例代码:

    Another use case are collections, arrays and maps. If a class has a

    field that is a one of those types, by default all of its elements are

    embedded in an element that represents the container object itself. By

    configuring the XStream with the XStream.addImplicitCollection(),

    XStream.addImplicitArray(), and XStream.addImplicitMap() methods it is

    possible to keep the elements directly as child of the class and the

    surrounding tag for the container object is omitted. It is even

    possible to declare more than one implicit collection, array or map

    for a class, but the elements must then be distinguishable to populate

    the different containers correctly at deserialization.

    In the following example the Java type representing the farm may have

    two containers, one for cats and one for dogs:

    06001

    但是,此SO answer表明XStream场示例是不可能的.

    我已经尝试过这个Java代码对我的Java代码进行单元测试,但还没有运气:

    XStream xstream = new XStream(new StaxDriver());

    xstream.alias("address", Address.class);

    xstream.alias("addressLine", String.class);

    xstream.addImplicitCollection(Address.class, "addressLines");

    Address address = (Address) xstream.fromXML(

    new FileInputStream("src/test/resources/addressTest.xml"));

    我应该尝试其他任何配置更改吗?

    注意:我目前正在使用XStream v1.2.2.

    展开全文
  • Java Map 初始化及其他

    2021-03-09 16:18:21
    Java Map 初始化及其他初看 cgaolei 翻译的 Java技巧之双括弧初始化 一文,走马观花,只知用法,未细看后面的解释。蔚为惊艳,心里想 Java 竟然有这么神奇的语法而一直未得知。因为在初始化集合时确实方便不少。原来...

    Java Map 初始化及其他

    初看 cgaolei 翻译的 Java技巧之双括弧初始化 一文,走马观花,只知用法,未细看后面的解释。蔚为惊艳,心里想 Java 竟然有这么神奇的语法而一直未得知。因为在初始化集合时确实方便不少。原来做某些测试要初始化集合时会用到 commons-lang 包和 JDK 的 Arrays 工具类,现在知道可以这么用了:

    01. Map map = new HashMap() {{

    02.          put( "Name" , "Unmi" );

    03.          put( "QQ" , "1125535" );

    04. }};

    05.

    06. List stooges = new ArrayList() {{

    07.          add( "Larry" );

    08.          add( "Moe" );

    09.          add( "Curly" );

    10. }};

    看起来都是在一条语句里完成,而不需要分步骤写成:

    1. Map map = new HashMap();

    2. map.put( "Name" , "Unmi" );

    3. map.put( "QQ" , "1125535" );

    一不小心没好好理解的人可能以为它是什么特别的语法,关键是大括号连一块了,原作者也是在故作姿态,美其名曰:双括弧语法(double-brace syntax)。真是乱花渐欲迷人眼,其实就是匿名类加初始块。该文有解释:第一层括弧 实际是定义了一个内部匿名类 (Anonymous Inner Class),第二层括弧 实际上是一个实例初始化块 (instance initializer block),这个块在内部匿名类构造时被执行。

    那怎么去更好理解它呢?如果我们写成如下的方式应该会更好理解吧,提个技巧,在 Eclipse 中对第一段代码按下 Ctrl + Shift + F 就如下了:

    1. Map map = new HashMap() {

    2.      {

    3.          put( "Name" , "Unmi" );

    4.          put( "QQ" , "1125535" );

    5.      }

    6. };

    其实就是匿名类啊,会创建出一个 HashMap 的子类来,匿名类中一个 {} 括起来的初始化块,里面自然可放置初始化代码。{} 块中的代码编译后会放到 (),也就是构造方法中去,所以可用来初始化实例。如果是写在 TestDoubleBrace 类中,编译后你会看到会生成 TestDoubleBrace$1.class 文件,反编译该文件内容是:

    01. final class com.unmi.TestDoubleBrace$1 extends java.util.HashMap{ //创建了一个 HashMap 的子类 TestDoubleBracke$1

    02. com.unmi.TestDoubleBrace$1();

    03.    Code:

    04.     0:   aload_0

    05.     1:   invokespecial   #8; //Method java/util/HashMap."":()V   //{} 中的代码放到了构造方法中去了

    06.     4:   aload_0

    07.     5:   ldc     #10; //String Name

    08.     7:   ldc     #12; //String Unmi

    09.     9:   invokevirtual   #14; //Method put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    10.     12:  pop

    11.     13:  aload_0

    12.     14:  ldc     #18; //String QQ

    13.     16:  ldc     #20; //String 1125535

    14.     18:  invokevirtual   #14; //Method put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    15.     21:  pop

    16.     22:  return

    17.

    18. }

    所以说白了,什么双括弧语法啊,就是代码写得不规范,才使得那么的令人费解。如果还不能理解,再列两个惯用代码来:

    01. JFrame frame = new JFrame();

    02. frame.addMouseListener( new MouseAdapter() {

    03.      public void mouseClicked(MouseEvent e) {

    04.          // do womething here.

    05.      }

    06. });

    07.

    08. Thread thread = new Thread() {{ // 也学着样把大括号也连一块写了

    09.          this .setName( "作业处理线程" );

    10.      } // 如果不重新定义 run() 方法,那么后面那个大括号也能与这个并一块

    11.

    12.      public void run() {

    13.          // do something here.

    14.      }

    15. };

    16. thread.start();

    应该没问题了吧,上面是事件监听器和多线程常用的写法,如果他不把大括号连在一起,而是规范的写代码,相信您一开始也不会对所谓的 Double Brace Syntax 有太多的困惑。要说这种初始化方法运用到集合中还挺方便的,只是无端的多了些匿名类。

    刚开始我看到这种双括符写法也是把它奉若圣经,对它只一知半解,昨天在用 XStream 把一个对象生成 XML 文件时,其中有一个 List 属性,我就借用了这种双括符法来初始化元素,结果生成的 XML 文件走了样,原因是 XStream 的 Converter 能处理 ArrayList,但无法很好的处理生成的 ArrayList 的匿名子类。因此才回头认真的重新审视了一番这个所谓的双括符初始化语法。

    展开全文
  • 刚开始我看到这种Java双括弧写法也是把它奉若圣经,对它只一知半解,昨天在用 XStream 把一个对象生成 XML 文件时,其中有一个 List 属性,我就借用了这种双括符法来初始化元素,结果生成的 XML 文件走了样,原因是...

    转载:http://www.evget.com/article/2009/8/21/12289.html

    http://www.iteye.com/topic/418542

    Map map = new HashMap() {{

    put("Name", "Unmi");

    put("QQ", "1125535");

    }};

    List stooges = new ArrayList() {{

    add("Larry");

    add("Moe");

    add("Curly");

    }};

    看起来都是在一条语句里完成,而不需要分步骤写成:

    Map map = new HashMap();

    map.put("Name","Unmi");

    map.put("QQ","1125535");

    一不小心没好好理解的人可能以为它是什么特别的语法,关键是大括号连一块了,原作者也是在故作姿态,美其名曰:双括弧语法(double-brace syntax)。真是乱花渐欲迷人眼,其实就是匿名类加初始块。该文有解释:第一层括弧 实际是定义了一个内部匿名类 (Anonymous Inner Class),第二层括弧 实际上是一个实例初始化块 (instance initializer block),这个块在内部匿名类构造时被执行。

    那怎么去更好理解它呢?如果我们写成如下的方式应该会更好理解吧,提个技巧,在 Eclipse 中对第一段代码按下 Ctrl + Shift + F 就如下了:

    Map map = new HashMap() {

    {

    put("Name", "Unmi");

    put("QQ", "1125535");

    }

    };

    其实就是匿名类啊,会创建出一个 HashMap 的子类来,匿名类中一个 {} 括起来的初始化块,里面自然可放置初始化代码。{} 块中的代码编译后会放到 (),也就是构造方法中去,所以可用来初始化实例。如果是写在 TestDoubleBrace 类中,编译后你会看到会生成 TestDoubleBrace$1.class 文件,反编译该文件内容是:

    final class com.unmi.TestDoubleBrace$1 extends java.util.HashMap{ //创建了一个 HashMap 的子类 TestDoubleBracke$1

    com.unmi.TestDoubleBrace$1();

    Code:

    0: aload_0

    1: invokespecial #8; //Method java/util/HashMap."":()V //{} 中的代码放到了构造方法中去了

    4: aload_0

    5: ldc #10; //String Name

    7: ldc #12; //String Unmi

    9: invokevirtual #14; //Method put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    12: pop

    13: aload_0

    14: ldc #18; //String QQ

    16: ldc #20; //String 1125535

    18: invokevirtual #14; //Method put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    21: pop

    22: return

    }

    所以说白了,什么双括弧语法啊,就是代码写得不规范,才使得那么的令人费解。如果还不能理解,再列两个惯用代码来:

    JFrame frame = new JFrame();

    frame.addMouseListener(new MouseAdapter() {

    public void mouseClicked(MouseEvent e) {

    // do womething here.

    }

    });

    Thread thread = new Thread() {{ // 也学着样把大括号也连一块写了

    this.setName("作业处理线程");

    }// 如果不重新定义 run() 方法,那么后面那个大括号也能与这个并一块

    public void run() {

    // do something here.

    }

    };

    thread.start();

    应该没问题了吧,上面是事件监听器和多线程常用的写法,如果他不把大括号连在一起,而是规范的写代码,相信您一开始也不会对所谓的 Double Brace Syntax 有太多的困惑。要说这种初始化方法运用到集合中还挺方便的,只是无端的多了些匿名类。

    刚开始我看到这种Java双括弧写法也是把它奉若圣经,对它只一知半解,昨天在用 XStream 把一个对象生成 XML 文件时,其中有一个 List 属性,我就借用了这种双括符法来初始化元素,结果生成的 XML 文件走了样,原因是 XStream 的 Converter 能处理 ArrayList,但无法很好的处理生成的 ArrayList 的匿名子类。因此才回头认真的重新审视了一番这个所谓的双括符初始化语法。

    展开全文
  • Java_Map_初始化及其他

    2021-02-12 13:08:01
    null--------------------------摘----------------------------初看 cgaolei 翻译的 Java技巧之双括弧初始化一文,走马观花,只知用法,未细看后面的解释。蔚为惊艳,心里想 Java竟然有这么神奇的语法而一直未得知...
  • Xstream序列对象为XML

    2021-01-13 12:59:05
    import java.io.Writer;import com.thoughtworks.xstream.XStream;import com.thoughtworks.xstream.core.util.QuickWriter;import com.thoughtworks.xstream.io.HierarchicalStreamWriter;import ...
  • Spring OXM-XStream对象

    千次阅读 2017-12-07 20:32:12
    示例源码概述XStream为java.io.ObjectInputStream和ObjectOutputStream提供了替代的实现,允许以对象流方式进行XML序列或者反序列操作。 这对于处理集合对象非常有用(List<User> users),在内存中只保留一个...
  • Xstream

    2021-03-14 12:02:15
    xStream框架xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换;它们都完美支持JSON,但是对xml的支持还不是很好。一定程度上限制了对Java对象的描述,不...
  • XStream反序列

    2021-10-01 16:32:50
    XStream是Java类库,用来将对象序列成XML(JSON)或反序列化为对象。XStream在运行时使用Java反射机制对要进行序列的对象树的结构进行探索,并不需要对对象作出修改。XStream可以序列内部字段,包括私private和...
  • xstream反序列使用过程中发现,如果xml无该属性,则改属性会被自动复制为null。public abstract class SBase {@XStreamAsAttributeString id = "";@XStreamAsAttributeString name = "";@...
  • 在方法中初始化XStream xstream = new XStream(new DomDriver());会因为CompositeClassLoader无法回收导致线程阻塞降低程序性能。 现在因为主进程会重复调用多个XML解析方法同时传入不通的XML报文以及解析成不通的...
  • XStream注解开启(注解扫描)方式

    千次阅读 2018-12-10 20:34:40
    先附上XStream官方文档和API地址: ... ...  这种通过使用XStream的注解,来完成相关配置开发,必须要开启注解以保证注解生效,否则注解无效,默认注解是不生效的。...如下图,未开启注解序列的...
  • XStream 简介

    2021-02-12 14:17:25
    XStream是一个简单的基于Java库,Java对象序列到XML,反之亦然(即:可以轻易的将Java对象和xml文档相互转换)。特点使用方便 - XStream的API提供了一个高层次外观,以简化常用的用例。无需创建映射 - XStream的API...
  • 198) at com.thoughtworks.xstream.core.JVM.bestReflectionProvider(JVM.java:175) at com.thoughtworks.xstream.XStream.(XStream.java:431) at com.thoughtworks.xstream.XStream.(XStream.java:385) at ...
  •  XStream xstream;   static  {  xstream  =   new  XStream();  xstream.autodetectAnnotations( true );  }    @XStreamAsAttribute   private  String from;    @XStreamAsAttribute  @...
  • XStream实用指南

    2020-12-22 14:13:31
    XStream实用指南——XuSweeter @ 2011-04-17XStream是thoughtworks公司发布的一个简单的Java类库,用于将JavaBean序列化为XML,并且能够将XML文件反向转换为JavaBean。本文根据XStream1.3.1版本对其基本使用做简单...
  • 介绍几种形式的xml报文对应的对象。 必要的依赖: <...xstream</artifactId> <version>1.4.11</version> </dependency> <dependency> <groupId>org.apac
  • xStream.jar踩坑指南

    2021-02-13 02:19:22
    前言第一次接触Xstream,是在做一个socket通信的项目,由于是二次重新开发,所以有部分代码沿用了原来的代码(改造前用的webservice),其中xml字符串转换为对象,以及对象转换为xml字符串的代码用到了这个包,所以我...
  • Eureka源码分析:ApplicationInfoManager初始化构建完整初始化代码前置:初始化EurekaInstanceConfig初始化InstanceInfo初始化ApplicationInfoManager 完整初始化代码 // 1、加载eureka-server.properties文件中的...
  • 系列文章目录 一.SpringCloud源码剖析-Eureka核心API 二.SpringCloud源码剖析-Eureka Client 初始化过程 三.SpringCloud源码剖析-Eureka服务注册 四.SpringCloud源码剖析-Eureka服务发现 五.SpringCloud源码剖析-...
  • stream也是一个比较好用的java对象转xml的工具,之前由于长期使用dom4j的缘故,都没研究过这玩意儿,最近由于搞微信开发的缘故要生成xml,但是又觉得dom4j有点繁琐,之后就找到了xstream的资料,顺便学了下觉得还是...
  • XStream 源码解析

    2018-11-22 17:37:14
    项目地址:XStream, 分析的版本: v1.4.11,Demo地址:TestStream, 相关jar下载地址 本文结构 1、功能介绍 2、总体设计 ...提供给Java使用的XML序列工具 1.2 如何使用 public void testPopulati...
  • Spring OXM-XStream使用别名

    千次阅读 2017-12-05 07:50:12
    导读导读在Spring OXM-XStream快速入门 的案例中,我们看到生成的xml报文如下:<com.xgj.oxm.xstream.quickDemo.domain.User> <userId>1 <userName>Artisan <password>artisan <credits>1000</credits>

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,625
精华内容 1,050
关键字:

xstream初始化

友情链接: my-space.rar