王清松
XML生成工具
xstream
构造方法
new Xsteam()
对象-->XML
String toXML(Object obj)
将object对象转换为XML(本质就是字符串)
例一——转换字符串类型的集合List<String>
代码
List<String> list=new ArrayList<>();
list.add("用户名");
list.add("密码");
XStream x=new XStream();
String s=x.toXML(list);
System.out.println(s);
结果
<list>
<string>用户名</string>
<string>密码</string>
</list>
例二——转换JavaBean类
JavaBean类代码
package mypackage;
public class User
{
private String username;
private String password;
public User(String username, String password)
{
this.username = username;
this.password = password;
}
.......
}
代码
User user=new User("用户一","密码一");
XStream x=new XStream();
String s=x.toXML(user);
System.out.println(s);
结果
<mypackage.User>
<username>用户一</username>
<password>密码一</password>
</mypackage.User>
例三——转换JavaBean类型的集合List<JavaBean>
代码
User user1=new User("用户一","密码一");
User user2=new User("用户二","密码二");
List<User> list=new ArrayList<>();
list.add(user1);
list.add(user2);
XStream x=new XStream();
String s=x.toXML(list);
System.out.println(s);
结果
<list>
<mypackage.User>
<username>用户一</username>
<password>密码一</password>
</mypackage.User>
<mypackage.User>
<username>用户二</username>
<password>密码二</password>
</mypackage.User>
</list>
修改标签名
void alias(String name, Class type)
举例
修改前
代码
User user=new User("用户一","密码一");
XStream x=new XStream();
String s=x.toXML(user);
System.out.println(s);
结果
<mypackage.User>
<username>用户一</username>
<password>密码一</password>
</mypackage.User>
修改后
代码
User user=new User("用户一","密码一");
XStream x=new XStream();
x.alias("aftermodify", User.class);
String s=x.toXML(user);
System.out.println(s);
结果
<aftermodify>
<username>用户一</username>
<password>密码一</password>
</aftermodify>
将JavaBean类的属性从子标签变为标签属性
void useAttributeFor(Class definedIn, String fieldName)
更改前
结果
默认将类中属性作为子标签
<list>
<mypackage.User>
<username>用户一</username>
<password>密码一</password>
</mypackage.User>
<mypackage.User>
<username>用户二</username>
<password>密码二</password>
</mypackage.User>
</list>
更改后
代码
User user1=new User("用户一","密码一");
User user2=new User("用户二","密码二");
List<User> list=new ArrayList<>();
list.add(user1);
list.add(user2);
XStream x=new XStream();
x.alias("User", User.class);
x.useAttributeFor(User.class,"username");
String s=x.toXML(list);
System.out.println(s);
结果
类中属性变为标签属性
<list>
<User username="用户一">
<password>密码一</password>
</User>
<User username="用户二">
<password>密码二</password>
</User>
</list>
JSON(Javascript Object Notation)
概述
一种轻量级的数据交换格式
JSON&JS
关系
一、JSON是一种信息传递的数据格式
二、JSON可以理解为是JS对象的字符串表示法,用字符串表示一个满足JSON格式的JS对象的信息
三、传递时,JSON可以看成一个字符串
举例:
JS对象——var obj={a:'Hello',b:'World'}
JSON——var json='{"a":"Hello","n":"World"}'
互相转换
JS对象—>JSON
var json=JSON.stringify({a:'Hello',b:'World'})
结果:'{"a":"Hello","b":"World"}'
JSON—>JS对象
var obj=JSON.parse('{"a":"Hello","b":"World"}')
结果:{a:'Hello',b:'World'}
语法规则
数据在键值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
数据格式
单个JSON对象
单个键值对
{key1:value1}
举例:
{"firstName":"Json"}
多个键值对
{key1:value1,key2:value2}
举例:
{"firstName":"Json","lastName":"Kingdon"}
多个JSON对象
[{key1:value1},{key2:value2}]
举例:
[{"firstName":"Json"},{"lastName":"Kingdon"}]
带名称举例:
"People":
[
{"firstName":"Json"},
{"lastName":"Kingdon"}
]
生成工具
Json-lib
对象JSONArray
将数组或List集合转成JSON
static JSONArray fromObject( Object object )
public static JSONArray fromObject( Object object, JsonConfig jsonConfig )
对象JSONObject
将对象或Map集合转成JSON
static JSONObject fromObject( Object object )
public static JSONObject fromObject( Object object, JsonConfig jsonConfig )
对象JsonConfig
构造方法
public JsonConfig()
public void setExcludes( String[] excludes )
不带JsonConfig参数举例
代码
User u1 = new User("用户一", "密码一");
User u2 = new User("用户二", "密码二");
List<User> list = new ArrayList<>();
list.add(u1);
list.add(u2);
JSONArray json = JSONArray.fromObject(list);
System.out.println(json);
结果
字符串
[{"password":"密码一","username":"用户一"},
{"password":"密码二","username":"用户二"}]
带JsonConfig参数举例
代码
User u1 = new User("用户一", "密码一");
User u2 = new User("用户二", "密码二");
List<User> list = new ArrayList<>();
list.add(u1);
list.add(u2);
JsonConfig f=new JsonConfig();
f.setExcludes(new String[]{"username"});
JSONArray json = JSONArray.fromObject(list,f);
System.out.println(json);
结果
字符串
[{"password":"密码一"},{"password":"密码二"}]
fastjson |