一、首先介绍json常用用法。(这里介绍json-lib-2.2.2-jdk15.jar包的)
1、json字符串的正确写法
String jsonString = "{"name":"zhangsan","age":20,"noWork":true,"address":"changjiangsanxia"}";
String jsonArrayString= "[{"name":"wang","id":"001"},{"name":"lisi","id":"002"}]";
String jsonArrayString2 = "["zhangsan","lisi","wangwu"]";
String jsonObjectString = "{"stuNames":["zhangsan","xiaoming"]}";
2、常用json的转换用法 (这里介绍net.sf.json.JSONObject和net.sf.json.JSONArray两种)
json字符串转换为JSONObject 对象:
JSONObject json = JSONObject.fromObject(jsonString);
JSONObject对象转换为字符串: 【JSONArray对象转换为字符串,同理】
String test = json.toString(); 或 String test = json+"";
Sting test = (String)json;//这种写法是错误的。
JSONObject对象转换为某个Bean类,则使用JSONObject.toBean(JSONObejct json,Class class);
json字符串转换为JSONArray对象:
JSONArray jsonArr = JSONArray.fromObject(jsonArrayString);
for (int j = 0; j < jsonArr.size(); j++) {
System.out.println(jsonArr.get(j));
}
输出结果是:
{"name":"wang","id":"001"}
{"name":"lisi","id":"002"}
JSONArray jsonArr = JSONArray.fromObject(jsonArrayString2);
for (int j = 0; j < jsonArr.size(); j++) {
System.out.println(jsonArr.get(j));
}
输出结果是:
zhangsan
lisi
wangwu
从json字符串中获取JSONArray对象:
JSONObject jsonObj = JSONObject.fromObject(jsonObjectString);
JSONArray jsonArr = jsonObj.getJSONArray("stuNames");
为JSONObject赋默认值,要注意:
1、JSONObject json1 = JSONObject.fromObject("{}");//这样写是正确的。
2、JSONObject json2 = JSONObject.fromObject("");//这样写是错误的。
JSONObject json22 = JSONObject.fromObject("错误汉字");//这样写是错误的。
会报异常:
net.sf.json.JSONException: A JSONObject text must begin with '{' at character 0 of …………
3、JSONObject json3 = JSONObject.fromObject("null");//这样写也是正确的。
但之后在对json3进行其他操作,如不进行条件非空的判断就会报异常。
例如:json2.put("susccess","ok");
会报异常:net.sf.json.JSONException: null object …………
使用第三种赋值的正确写法:
JSONObject json2 = JSONObject.fromObject("null");
if(null != json2 && !"null".equals(json2.toString()))
json2.put("susccess","ok");
System.out.println(json2.toString());
二、两种方式转换为字符串
String test = null + "";
String test2 = (String)null;
System.out.println(test instanceof String);//true
System.out.println(test2 instanceof String);//false
System.out.println(test2 == null);//true
System.out.println(test.getClass());//class java.lang.String
System.out.println(test2.getClass());//报错NullPointerException
三、java基本类型转换(自己总结的规律)
包装类型转换为基本类型,一般使用parseInt(String)、parseLong(String);
例如:
String test11 = 2 + "";
int hei = Integer.parseInt(test11);
long l = Long.parseLong(test11);
基本类型转换为包装类型,一般使用valueOf(int i)、 valueOf(long l);
例如:
long l = 0;
Long big1 = Long.valueOf(l);
Long big2 = Long.valueOf(test11);
以上内容仅是本人测试过的,项目经验,如有异议,建议留言提出,本人乐于接纳学习。