以前のAjaxと述べ、JSONで本日述べました。JSONデータ形式:データ・フォーマットを持っているフロントエンドが必要。そして、対話型サーバは、サーバがデータのこのセットは、クライアント上でレンダリングに必要なデータを選択的に対処するために、遠位データJSONのセットを返します。Ajaxリクエストデータが送信されたJSON形式です。
1.JSONプロフィール
サーバーとの相互作用の間に、クライアント(またはブラウザ)は、サーバが文字列を返すことができますが、私たちは、たとえば、複雑なデータを返すために必要がある場合、必要性がオブジェクトを返すようにすると、私たちはどのようなデータのフォーマットを定義する必要があります。
AJAX XMLデータ形式を使用して起動し、XMLデータ形式が簡単に書くために、非常に単純明快ですが、XMLは、あまりにも多くのラベルだけでなく、非常に複雑な構造が含まれているため、それらを解決するには、比較的、今、複雑になっていますAJAXはほとんどXMLにデータを送信するために使用していません。代わりに、新しい技術JSON。
JSONは、JavaScriptのオブジェクト表記の頭文字である軽量JSが簡単に読み書きするために、データ交換フォーマットを提供します。マシンが解析し、生成することは簡単です。
JSONオブジェクトは、本質的にJSのオブジェクトが、オブジェクトは、それが直接他の言語のオブジェクトに変換することができる異なる言語で渡されるだけでなく、ツールによって、文字列に変換することができ、かなり特殊です。
2.JSONの使用
標準フォーマットJSONでは、括弧内のオブジェクトで囲まれたJSON、オブジェクト属性は、JSONのキーは文字列である、それは二重引用符で囲む必要があります。各キーの間にカンマで区切って指定します。
2.1 JSONの定義
JSONは、データタイプの6種類で表されます。
- 弦
- 例:「文字列」
- 注意:あなたは、単一引用符を使用することはできません
- デジタル:
- 例:123.4
- ブール:
- 例:真、偽
- NULL値:
- 例:ヌル
- オブジェクト
- 例子:{“name”:”sunwukong”, ”age”:18}
- 配列
- 例:[1、 "STR"、真]
フォーマット:
var 变量名 = {
“key” : value , // Number类型
“key2” : “value” , // 字符串类型
“key3” : [] , // 数组类型
“key4” : {}, // json 对象类型
“key5” : [{},{}] // json 数组
};
例えば:
var jsons = {
"key1":"abc", // 字符串类型
"key2":1234, // Number
"key3":[1234,"21341","53"], // 数组
"key4":{ // json类型
"key4_1" : 12,
"key4_2" : "kkk"
},
"key5":[{ // json数组
"key5_1_1" : 12,
"key5_1_2" : "abc"
},
{
"key5_2_1" : 41,
"key5_2_2" : "bbj"
}]
};
2.2 JSONオブジェクトアクセス
JSONオブジェクトは、定義によって、それがオブジェクトであることを知っています。どのオブジェクトのキープロパティです。私たちは、あなたがすることができ、アクセスのオブジェクト名[属性名]を使用する必要がある、オブジェクトのプロパティにアクセスしたいです。
<script type="text/javascript">
// json的定义
var jsons = {
"key1":"abc", // 字符串类型
"key2":1234, // Number
"key3":[1234,"21341","53"], // 数组
"key4":{ // json类型
"key4_1" : 12,
"key4_2" : "kkk"
},
"key5":[{ // json数组
"key5_1_1" : 12,
"key5_1_2" : "abc"
},{
"key5_2_1" : 41,
"key5_2_2" : "bbj"
}]
};
// 访问json的属性
alert(jsons.key1); // "abc"
// 访问json的数组属性
alert(jsons.key3[1]); // "21341"
// 访问json的json属性
alert(jsons.key4.key4_1);//12
// 访问json的json数组
alert(jsons.key5[0].key5_1_2);//"abc"
</script>
2.3 JSONの2つの一般的な方法
JSONオブジェクトや文字列オブジェクトシステムの変換:
- JSON.stringify(JSON):このメソッドは、ターゲットのJSON JSON文字列に変換することができます
- JSON.parse(jsonString):このメソッドは、文字列JSON JSONオブジェクトに変換することができます。
コード例:
<script type="text/javascript">
// 一个json对象
var obj = {
"a" : 12,
"c" : "str"
};
// 把json对象转换成为字符串对象
var objStr = JSON.stringify(obj);
//
alert(objStr);
// 把json对象的字符串,转换成为 json对象
var jsonObj = JSON.parse(objStr);
alert(jsonObj);
</script>
Javaで2.4 JSONの使用
私は、サードパーティ製のパッケージを使用するためのJavaを必要としているJSONの使用を使用します。3 JSON-libに、ジャクソン、gsonについてJSONを解析するため、現在の主流のツール。複雑かつ少ない効率的な使用に比べて分析ツールJSON-libの三種類。解像度の高い効率ながら、ジャクソンとgson。使い方は簡単で、ここでは説明する例をgson。
-
GoogleはGson会社はJSONの構文解析ツール、使いやすく、優れた分析性能を生み出すです。
-
Gsonは、解析操作は、そのクラスのインスタンスによって実行され、JSON Gsonコアクラスを解析されます。
-
Gsonは、Java間のマッピングのために提供さオブジェクトとJavaクラスは、JSONデータをライブラリ、JSON文字列は、Javaオブジェクトに変換、またはその逆のことができます。
JavaでJSONの動作3つの一般的な状況があります。
- JavaのJSONオブジェクトと変換
- Javaオブジェクトのリストとセット変換JSON
- マップオブジェクトとコンバートJSON
コード例:
package com.atguigu.gson;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class GsonTest {
static class Person {
private int age;
private String name;
public Person() {
// TODO Auto-generated constructor stub
}
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person [age=" + age + ", name=" + name + "]";
}
}
// 要把复杂的json字符串转换成为java对象。需要继承TypeToken类。
// 并把返回的类型当成TypeToken的泛型注入
static class PersonType extends TypeToken<List<Person>> {
}
public static void main(String[] args) {
// json操作,一定要先new一个gson对象。
Gson gson = new Gson();
// java对象--json
Person person = new Person(12, "wzg168");
// 把对象转成为json字符串
String personjson = gson.toJson(person);
System.out.println(personjson);
// 把json字符串转换成为java对象
Person p = gson.fromJson(personjson, Person.class);
System.out.println(p);
System.out.println("------------------------------------------");
// 2、java对象list集合和json的转换
List<Person> list = new ArrayList<Person>();
for (int i = 0; i < 3; i++) {
list.add(new Person(10 * i, "name-" + i));
}
String jsonListString = gson.toJson(list);
System.out.println(jsonListString);
// 把json数组转换成为List对象
// List<Person> ps = gson.fromJson(jsonListString, new PersonType().getType());
// 我们也可以使用匿名内部类
List<Person> ps = gson.fromJson(jsonListString, new TypeToken<List<Person>>() {
}.getType());
System.out.println(ps);
System.out.println("------------------------------------------");
// 3、map对象和json的转换
Map<String, Person> mapPerson = new HashMap<String, GsonTest.Person>();
// 添加person到map中
mapPerson.put("p1", new Person(1, "person-1"));
mapPerson.put("p2", new Person(2, "person-2"));
// 把map转换成为json对象
String jsonMapString = gson.toJson(mapPerson);
System.out.println(jsonMapString);
// 通过使用匿名内部类的方式
Map<String, Person> map = gson.fromJson(jsonMapString,
new TypeToken<HashMap<String, Person>>() {}.getType());
System.out.println(map);
}
}