Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Xstream-字符串数组_Java_Xml Serialization_Alias_Xstream - Fatal编程技术网

Java Xstream-字符串数组

Java Xstream-字符串数组,java,xml-serialization,alias,xstream,Java,Xml Serialization,Alias,Xstream,首先,我不是在要求一个解决方案,而是一种思考的方式 我有一些数据需要序列化以便稍后签出。。。我知道怎么做。。但是字段名是问题所在 数据结构包括: Name of the Field CoordX CoordY Value (有20个不同的字段。我需要检查biiigggg字符串日志…) 我可以使用单个字符串[]或多个字符串[]。。。正如我所说。。问题是它在XML上的显示方式 如果我使用单个arraylist多维->[]我得到了这个 <teste> <string-a

首先,我不是在要求一个解决方案,而是一种思考的方式

我有一些数据需要序列化以便稍后签出。。。我知道怎么做。。但是字段名是问题所在

数据结构包括:

Name of the Field
CoordX
CoordY
Value
(有20个不同的字段。我需要检查biiigggg字符串日志…)

我可以使用单个字符串[]或多个字符串[]。。。正如我所说。。问题是它在XML上的显示方式

如果我使用单个arraylist多维->[]我得到了这个

<teste>
      <string-array>
        <string>fieldName</string>
        <string>x</string>
        <string>y</string>
        <string>value</string>
      </string-array>
      <string-array>
        <string>fieldName</string>
        <string>x</string>
        <string>y</string>
        <string>value</string>
      </string-array>
</teste>

字段名
x
Y
价值
字段名
x
Y
价值
如果我使用单个字符串[],我可以将字符串的名称作为字段名

<Fieldname>      
    <string>X</string>
    <string>y</string>
    <string>Value</string>
</Fieldname>

X
Y
价值
我看到普通别名适用于所有字段(@XStreamImplicit(itemFieldName=“part”)),但这并不能解决我的问题

如果在反序列化的另一端,按行检查日志,不按字段检查日志(我知道第1行是字段名,第2行是x..etc


所以。。你们觉得怎么样

我通常根据“字段”的内容设计序列化。假设您的名称和值字段相对较小,您可以将它们序列化为

<list>
  <field name="foo" cordX="12324" cordY="1324" value="value of field foo" />
  <field name="foo" cordX="12324" cordY="1324" value="value of field foo" />
</list>
您可以这样定义容器和字段:

@XStreamAlias("mylistofitems")
public class Container {
    public List<Field> fields;

    public void addField(String name, int x, int y, String desc) {
        if (fields == null) fields = new ArrayList<Field>();
        fields.add(new Field(name, x,y, desc));

    }
}

@XStreamAlias("field")
public class Field {
    public Field() {}
    public Field(String name, int x, int y, String desc) {
        this.name = name;
        cordX = x;
        cordY = y;
        value = desc;
    }
    @XStreamAsAttribute
    private String name;
    @XStreamAsAttribute
    private int cordX;
    @XStreamAsAttribute
    private int cordY;
    @XStreamAsAttribute
    private String value;
}
@XStreamAlias(“mylistofitems”)
公营货柜{
公共列表字段;
public void addField(字符串名称、整数x、整数y、字符串描述){
如果(fields==null)fields=newarraylist();
添加(新字段(名称,x,y,描述));
}
}
@XStreamAlias(“字段”)
公共类字段{
公共字段(){}
公共字段(字符串名称、整数x、整数y、字符串描述){
this.name=名称;
cordX=x;
cordY=y;
值=desc;
}
@XStreamAsAttribute
私有字符串名称;
@XStreamAsAttribute
私人int cordX;
@XStreamAsAttribute
科迪私人酒店;
@XStreamAsAttribute
私有字符串值;
}
程序将给出以下输出:

<mylistofitems>
  <fields>
    <field name="boo" cordX="1" cordY="2" value="desc"/>
    <field name="boo" cordX="1" cordY="2" value="desc"/>
  </fields>
</mylistofitems>
<mylist>
  <field name="boo" cordX="1" cordY="2" value="desc"/>
  <field name="boo" cordX="1" cordY="2" value="desc"/>
</mylist>


希望这有帮助。

我通常根据“字段”的内容设计序列化。假设您的名称和值字段相对较小,您可以将它们序列化为

<list>
  <field name="foo" cordX="12324" cordY="1324" value="value of field foo" />
  <field name="foo" cordX="12324" cordY="1324" value="value of field foo" />
</list>
您可以这样定义容器和字段:

@XStreamAlias("mylistofitems")
public class Container {
    public List<Field> fields;

    public void addField(String name, int x, int y, String desc) {
        if (fields == null) fields = new ArrayList<Field>();
        fields.add(new Field(name, x,y, desc));

    }
}

@XStreamAlias("field")
public class Field {
    public Field() {}
    public Field(String name, int x, int y, String desc) {
        this.name = name;
        cordX = x;
        cordY = y;
        value = desc;
    }
    @XStreamAsAttribute
    private String name;
    @XStreamAsAttribute
    private int cordX;
    @XStreamAsAttribute
    private int cordY;
    @XStreamAsAttribute
    private String value;
}
@XStreamAlias(“mylistofitems”)
公营货柜{
公共列表字段;
public void addField(字符串名称、整数x、整数y、字符串描述){
如果(fields==null)fields=newarraylist();
添加(新字段(名称,x,y,描述));
}
}
@XStreamAlias(“字段”)
公共类字段{
公共字段(){}
公共字段(字符串名称、整数x、整数y、字符串描述){
this.name=名称;
cordX=x;
cordY=y;
值=desc;
}
@XStreamAsAttribute
私有字符串名称;
@XStreamAsAttribute
私人int cordX;
@XStreamAsAttribute
科迪私人酒店;
@XStreamAsAttribute
私有字符串值;
}
程序将给出以下输出:

<mylistofitems>
  <fields>
    <field name="boo" cordX="1" cordY="2" value="desc"/>
    <field name="boo" cordX="1" cordY="2" value="desc"/>
  </fields>
</mylistofitems>
<mylist>
  <field name="boo" cordX="1" cordY="2" value="desc"/>
  <field name="boo" cordX="1" cordY="2" value="desc"/>
</mylist>

希望这有帮助