一:org.json的使用
1.java生成json
1-1:通过JSONObject
public static String
createJson() {
JSONObject toly =
new JSONObject();
toly.put(
"name",
"toly");
toly.put(
"age",
24);
toly.put(
"birthday",
"1994-03-28");
toly.put(
"isman",
false);
toly.put(
"major",
new String[]{
"java",
"c++"});
return toly.toString();
}
1-2:通过Map
public static
String createJsonByMap() {
Map<
String,
Object> toly =
new HashMap<
String,
Object>();
toly.put(
"name",
"toly");
toly.put(
"age",
24);
toly.put(
"birthday",
"1994-03-28");
toly.put(
"isman",
false);
toly.put(
"major",
new String[]{
"java",
"c++"});
return new JSONObject(toly).toString();
}
1-3:通过bean
public static
String createJsonByBean() {
Person toly
= new Person();
toly
.setAge(
24);
toly
.setName(
"toly");
toly
.setBirthday(
"1994-03-28");
toly
.setIsman(
false);
List<String> major
= new ArrayList
<String>();
major
.add(
"java");
major
.add(
"c++");
toly
.setMajor(major);
return new JSONObject(toly)
.toString();
}
生成的json格式化后:
{
"
age":
24,
"
birthday":
"1994-03-28",
"
isman":
false,
"
major":
[
"java",
"c++"
],
"
name":
"toly"
}
2.json解析
public static Person
parseJson(String json) {
JSONObject
object =
new JSONObject(json);
Person toly =
new Person();
if (!
object.isNull(
"name")) {
toly.setName(
object.getString(
"name"));
}
if (!
object.isNull(
"age")) {
toly.setAge(
object.getInt(
"age"));
}
if (!
object.isNull(
"birthday")) {
toly.setBirthday(
object.getString(
"birthday"));
}
if (!
object.isNull(
"isman")) {
toly.setIsman(
object.getBoolean(
"isman"));
}
if (!
object.isNull(
"major")) {
JSONArray major =
object.getJSONArray(
"major");
ArrayList<String> majors =
new ArrayList<String>();
for (
int i =
0; i < major.length(); i++) {
majors.add((String) major.
get(i));
}
toly.setMajor(majors);
}
return toly;
}
程序入口:json.Client#main
File file = new File(Client
.class.getResource(
"/toly.json")
.getFile())
String s = FileUtils
.readFileToString(file,
"utf-8")
Person toly = JsonParser
.parseJson(s)
System
.out.println(toly)
F:\Intellij_idea\Java\json\src\main\java\toly.json
{
"
birthday":
"1994-03-28",
"
major":
[
"java",
"c++"
],
"
name":
"toly",
"
isman":
false,
"
age":
24
}
输出:
Person{name='toly', birthday='1994-03-28', age=24, isman=false, major=[java, c++]}
Gson的使用
1.生成json
private static
String createJsonByBeanUseGson() {
Person toly
= new Person();
toly
.setAge(
24);
toly
.setName(
"toly");
toly
.setBirthday(
"1994-03-28");
toly
.setIsman(
false);
List<String> major
= new ArrayList
<String>();
major
.add(
"java");
major
.add(
"c++");
toly
.setMajor(major);
return new Gson()
.toJson(toly);
}
注:在bean对象的字段上加上
@SerializedName()注解,可自定义json键名,如:
@SerializedName(
"DiaoSiName")
private String name;
结果格式化后:
{
"
DiaoSiName":
"toly",
"
age":
24,
"
birthday":
"1994-03-28",
"
isman":
false,
"
major":
[
"java",
"c++"
]
}
2.json解析:
private static void parseJsonUseGson() throws IOException {
File file = new File(org_json
.Client.class.getResource(
"/toly.json")
.getFile())
String s = FileUtils
.readFileToString(file,
"utf-8")
Gson gson = new Gson()
Person person = gson
.fromJson(s, Person
.class)
System
.out.println(person)
}
控制台:
Person{name=
'null', birthday=
'1994-03-28', age=
24, isman=
false, major=[java, c++]}
3.GsonBuilder自定义构造样式
private static
String createJsonByBeanUseGson() {
Person toly
= new Person();
toly
.setAge(
24);
toly
.setName(
"toly");
toly
.setBirthday(
"1994-03-28");
toly
.setIsman(
false);
List<String> major
= new ArrayList
<String>();
major
.add(
"java");
major
.add(
"c++");
toly
.setMajor(major);
GsonBuilder gsonBuilder
= new GsonBuilder();
gsonBuilder
.setPrettyPrinting();
gsonBuilder
.setFieldNamingStrategy(
new FieldNamingStrategy() {
public String translateName(Field field) {
if (field
.getName()
.equals(
"name")) {
return "NAME";
}
return "z-"+field
.getName();
}
});
return gsonBuilder
.create()
.toJson(toly);
}
控制台:
{
"
NAME":
"toly",
"
z-birthday":
"1994-03-28",
"
z-age":
24,
"
z-isman":
false,
"
z-major":
[
"java",
"c++"
]
}
解析时的日期处理
private static void parseJsonUseGsonFormateDate() throws IOException {
File file = new File(org_json
.Client.class.getResource(
"/toly.json")
.getFile())
String s = FileUtils
.readFileToString(file,
"utf-8")
Gson gson = new Gson()
Person_Date person = gson
.fromJson(s, Person_Date
.class)
System
.out.println(person
.getBirthday())
}
控制台:
Mon Mar 28 00
:00:00 CST 1994
转载于:https://www.cnblogs.com/toly-top/p/9782019.html