1,984
JSON的基本语法
1.JSon的四个基本规则
(1)并列的数据之间用逗号(,)分隔
(2)映射用冒号(:)表示
(3)并列数据的集合(数组)用方括号([])表示
(4)映射的集合(对象)用大括号({})表示
2.缺点
(1)要求是unicode,否则会出现乱码
(2)语法过于严禁,必须遵循json语法四个原则
3.数据类型
(1)数据结构:object、array
(2)基本类型:string、number、true、false、null
(3)key必须是String类型的,value是任何基本类型或数据结构
实例代码:
{
"name":"王小二",
"age":25.2,
"birthday":"1990-01-01",
"school":"蓝翔",
"major":["理发","挖掘机"],
"has_girlfriend":false,
"car":null,
"house":null,
"time":{
"value":30,
"unit":"分钟"
}
}
Android Studio创建json文件:
(1)在assets目录下新建text.json文件,内容如下:
{
"languages":[
{"id":1,"ide":"Eclipse","name":"Java"},
{"id":2,"ide":"XCode","name":"Swift"},
{"id":3,"ide":"Visual Studio","name":"C#"},
],
"cat":"it"
}
(2)读取json和创建json
package json.android.com.jsontest;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Json数据的读写
try {
// InputStream is = this.getAssets().open("test.json");//eclipse
InputStream is = MainActivity.this.getClass().getClassLoader().getResourceAsStream("assets/" + "text.json");//android studio
BufferedReader bufr = new BufferedReader(new InputStreamReader(is));
String line;
StringBuilder builder = new StringBuilder();
while ((line = bufr.readLine()) != null) {
builder.append(line);
}
is.close();
bufr.close();
try {
JSONObject root = new JSONObject(builder.toString());
Log.d("info","cat=" + root.getString("cat"));
JSONArray array = root.getJSONArray("languages");
for (int i = 0; i < array.length(); i++) {
JSONObject lan = array.getJSONObject(i);
Log.d("info","-----------------------");
Log.d("info","id=" + lan.getInt("id"));
Log.d("info","ide=" + lan.getString("ide"));
Log.d("info","name=" + lan.getString("name"));
}
} catch (JSONException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//Json数据的创建
try {
JSONObject root = new JSONObject();
root.put("cat", "it");
JSONObject lan1 = new JSONObject();
lan1.put("id", 1);
lan1.put("ide", "Eclipse");
lan1.put("name", "Java");
JSONObject lan2 = new JSONObject();
lan2.put("id", 2);
lan2.put("ide", "XCode");
lan2.put("name", "Swift");
JSONObject lan3 = new JSONObject();
lan3.put("id", 3);
lan3.put("ide", "Visual Studio");
lan3.put("name", "C#");
JSONArray array = new JSONArray();
array.put(lan1);
array.put(lan2);
array.put(lan3);
root.put("languages", array);
Log.d("info",root.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
}
5+