00-1010类型描述Number数字String字符串boolean Array Object对象null值(1)json不区分整数、小数和其他类型,而是使用Number统一存储数字。
(2)Array表示一个数组,用括号“[]”括起来,并用逗号分隔。元素可以是任何类型。
(3)Object表示一个对象,类似于C语言中的结构,用花括号“{}”括起来,其元素要求是键值对,键必须是String类型,值可以是任意类型。键和值之间的映射关系用' : '表示,元素之间用逗号分隔。
00-1010在eclipse中使用JSONObject时,需要参考org.json包,建议参考maven。温馨提示:我多次创建maven项目失败,但在网上搜索了很久还是想不出来。以后我会多试几次,就试试吧。
如果是在Android Studio中,可以直接使用。
2.1直接施工
JSON object obj=new JSON object();
投入(关键,价值);直接构建就是直接实例化一个JSONObject,然后调用它的put()方法将数据写入其中。put()方法的第一个参数是键值,必须是String类型,第二个参数是value,可以是boolean、double、int、long、Object、Map、Collection等。当然,double、int等类型只在Java中有,写入json时,unity会存储为Number类型。
示例:
导入org . JSON . JSON object;公共类JSONObjectSample {公共静态void main(String[]args)}
createJson();
}私有静态void createJson(){ 0
JSON object obj=new JSON object();
put('name ',' John ');
put('sex ',' male ');
put('age ',22);
obj.put('is_student ',true);
obj.put('爱好',new String[] { '徒步','游泳' });//调用toString()方法直接打印出它的内容。
system . out . println(obj . tostring());
}
}输出结果为:
{ '兴趣爱好' : ['徒步','荡秋千'],'性' : '男','名' :' json ',' is _ student' 3360 true,' age' :22}这里可以看出为了缩小尺寸,如果想直接看内容,可以用一些在线json解析器来查看。
2.2使用HashMap构建
使用HashMap构建json实际上就是创建一个HashMap对象并封装数据,然后在创建JSONObject时将其作为参数传入。
示例:
公共类JSONObjectSample {公共静态void main(String[]args)}
createJsonByMap();
}私有静态void createJsonByMap(){ 0
映射字符串,对象数据=新HashMapString,对象();
data.put('name ',' John ');
data.put('sex ',' male ');
data.put('age ',22);
data.put('is_student ',true);
data.put('爱好',new String[] { '徒步','游泳' });
JSONObject obj=new JSONObject(数据);
system . out . println(obj . tostring());
}
}2.3使用JavaBean构建
与前两种方法相比,在实际开发中使用JavaBean构建json更为常见,因为代码重用率更高。
示例:
JavaBean:
公共类PersonInfo {
私有字符串名称;
私弦性;
私人互联网时代;
私有布尔值isStudent
私弦[]爱好;
public void setName(String name){ this . name=name;
} public void setSex(St
ring sex) { this.sex = sex; } public void setAge(int age) { this.age = age; } public void setStudent(boolean isStudent) { this.isStudent = isStudent; } public void setHobbies(String[] hobbies) { this.hobbies = hobbies; } //getter不能少 public String getName() { return name; } public String getSex() { return sex; } public int getAge() { return age; } public boolean isStudent() { return isStudent; } public String[] getHobbies() { return hobbies; } }main:
import org.json.JSONObject;public class JSONObjectSample { public static void main(String[] args) { createJsonByJavaBean(); } private static void createJsonByJavaBean() { PersonInfo info = new PersonInfo(); info.setName("John"); info.setSex("male"); info.setAge(22); info.setStudent(true); info.setHobbies(new String[] {"hiking", "swimming"}); JSONObject obj = new JSONObject(info); System.out.println(obj); } }需要注意一点,JavaBean一定要有getter方法,否则会无法访问存储的数据。
3. 解析json
解析json主要是基本类型如Number、boolean等,与数组Array。
基本类型的解析直接调用JSONObject对象的getXxx(key)方法,如果获取字符串则getString(key),布尔值则getBoolean(key),以此类推。
数组的解析稍微麻烦一点,需要通过JSONObject对象的getJSONArray(key)方法获取到一个JSONArray对象,再调用JSONArray对象的get(i)方法获取数组元素,i为索引值。
范例:
首先在工程目录"src/main/java"下创建一个json文件,用于解析。
demo.json:
{ "hobbies": [ "hiking", "swimming" ], "sex": "male", "name": "John", "is_student": true, "age": 22}在pom.xml中加入对commons-io的依赖,以便于使用FileUtils进行文件访问:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.studying</groupId> <artifactId>myjson</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>myjson</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20160810</version> </dependency> <!--加入对commons-io的依赖--> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> </dependencies></project>主类:
import java.io.File;import java.io.IOException; import org.apache.commons.io.FileUtils; import org.json.JSONArray; import org.json.JSONObject; public class JSONObjectSample { public static void main(String[] args) throws IOException { File file = new File("src/main/java/demo.json"); String content = FileUtils.readFileToString(file); //对基本类型的解析 JSONObject obj = new JSONObject(content); System.out.println("name:" + obj.getString("name")); System.out.println("sex:" + obj.getString("sex")); System.out.println("age" + obj.getInt("age")); System.out.println("is_student" + obj.getBoolean("is_student")); //对数组的解析 JSONArray hobbies = obj.getJSONArray("hobbies"); System.out.println("hobbies:"); for (int i = 0; i < hobbies.length(); i++) { String s = (String) hobbies.get(i); System.out.println(s); } } }结尾
这里最后说一句,欢迎大家到我本人的技术类网站:"技术栈":"www.jishux.com",来参观学习呦。