java web之路 json简介
程序员文章站
2024-01-30 20:21:52
...
json格式:{"skill":["java","c"],"name":"王小二","age":23.4}
json是以key-value类型保存,value类型有 String , number, boolean , null , Object[];可以发现有number类型,而没有分int,long,float等数据类型。并且没有日期类型。
对json而言,数字类型只有number,包含了所有的数字类型,日期使用字符串来代替,要使用的时候,再用类型转换处理
json支持的各类语言包地址:http://www.json.org/
1. 不同方法生成json对象
package json;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONObject;
import entity.Items;
public class UseJson {
public static void main(String[] args) {
// TODO Auto-generated method stub
jsonObject();
mapToJson();
javabeansToJson();
}
/**
* 通过语言包
*/
public static void jsonObject(){
JSONObject w = new JSONObject();
Object nothing=null;
w.put("name", "王小二");
w.put("age", 23.4);
w.put("skill",new String[]{"java","c"});
w.put("car", nothing);
System.out.println(w.toString());
}
/**
* 通过map
*/
public static void mapToJson(){
Map<String, Object> w = new HashMap<>();
Object nothing=null;
w.put("name", "王小二");
w.put("age", 23.4);
w.put("skill",new String[]{"java","c"});
w.put("car", nothing);
/**
* JSONObject构建函数,将map对象传进去,会根据map对象内容自动转为json
*/
System.out.println("通过map方法生成json:"+new JSONObject(w).toString());
}
/**
* 通过javabeans
*/
public static void javabeansToJson(){
Items item = new Items();
item.setCity("上海 ");
item.setName("java");
item.setPrice(56);
System.out.println(new JSONObject(item).toString());
}
}
2. 从文件中读取json内容
创建json文件 testjson.json
{
"name": "王小二",
"age": 23.4,
"skill": [
"java",
"c",
34
]
}
使用json方式读取文件内容
package json;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.json.JSONArray;
import org.json.JSONObject;
public class ReadJsonFormFile {
public static void main(String[] args) {
// TODO Auto-generated method stub
String jsonstring=null;
File file = new File(ReadJsonFormFile.class.getResource("/json/testjson.json").getFile());
try {
//引用org.apache.commons.io读取文件
jsonstring = FileUtils.readFileToString(file);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JSONObject jsonobject = new JSONObject(jsonstring);
//读取文件中的字符串
System.out.println("姓名: " +jsonobject.getString("name"));
//读取文件中的数字
System.out.println("年龄: "+jsonobject.getDouble("age"));
//读取文件中的数组
JSONArray jsonarray = jsonobject.getJSONArray("skill");
for (Object skill : jsonarray) {
System.out.println("技能:" + skill);
}
}
}
从文件中读取,判断读取的对象是否为空,不为空时打印信息,使用的方法if(!jsonobject.isNull("nikename")){
System.out.println("昵称:"+jsonobject.getString("nikename"));
}