Json对象解析
2012-03-14 15:45
155 查看
(一)在网络数据传输中,经常用到Json或者xml,两者在可读性、解析手段上均比较好,但是Json优势是体积小,与JavaScript交互方便,缺点是对数据的可描述性比较差。
(二)Json由一系列的键值对的集合或 数组对象。
(三)例子:{"name”:"zhangsan","age":10}或者[{"name”:"zhangsan","age":10},:{"name”:"lisi","age":20}]
(四)解析
可以调用Google-gson进行解析,参考里面的例子。从android 3.0开始,android加入了JsonReader类,该类可以控制Json的读取。
下面是个例子:
1.JsonDemoActivity类
package com.wewell.json;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
//Json源数据及调用解析
public class JsonDemoActivity extends Activity {
/** Called when the activity is first created. */
private Button btn_json = null;//测试json数据
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn_json = (Button)findViewById(R.id.btnjson);
btn_json.setOnClickListener(new testJson());
}
class testJson implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
JsonUtils json = new JsonUtils();
String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
json.parseJson(jsonData);
String jsonData2 = "{\"name\":\"test\",\"age\":10}";
json.partJson2(jsonData2);
json.parseUserFromJson(jsonData);
}
}
}
2.JsonUtils类
package com.wewell.json;
import java.io.StringReader;
import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.LinkedList;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
//执行解析Json操作
public class JsonUtils {
public void partJson2(String jsonData){
Gson gson = new Gson();
User user = gson.fromJson(jsonData, User.class);//Json对象转换为对象
System.out.println("Json对象:name--->" + user.getName());
System.out.println("Json对象:age---->" + user.getAge());
}
public void parseJson(String jsonData){
try{
//如果需要解析JSON数据,首要要生成一个JsonReader对象
JsonReader reader = new JsonReader(new StringReader(jsonData));
reader.beginArray();//开始解析数组
while(reader.hasNext()){
reader.beginObject();//开始解析数组中对象
while(reader.hasNext()){
String tagName = reader.nextName();//解析键值对
if(tagName.equals("name")){
System.out.println("name--->" + reader.nextString());
}
else if(tagName.equals("age")){
System.out.println("age--->" + reader.nextInt());
}
}
reader.endObject();//结束解析数组中对象
}
reader.endArray();//结束解析数组
}
catch(Exception e){
e.printStackTrace();
}
}
public void parseUserFromJson(String jsonData){
Type listType = new TypeToken<LinkedList<User>>(){}.getType();
Gson gson = new Gson();
LinkedList<User> users = gson.fromJson(jsonData, listType);//进行Json对象转换为对象的迭代
for (Iterator iterator = users.iterator(); iterator.hasNext();) {
User user = (User) iterator.next();
System.out.println("name--->" + user.getName());
System.out.println("age---->" + user.getAge());
}
}
}
3.user类
package com.wewell.json;
/**
* 联系Json对象转为实体对象
* @author wangke
*
*/
public class User {
private String name=null;
private int age = 0;
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
(二)Json由一系列的键值对的集合或 数组对象。
(三)例子:{"name”:"zhangsan","age":10}或者[{"name”:"zhangsan","age":10},:{"name”:"lisi","age":20}]
(四)解析
可以调用Google-gson进行解析,参考里面的例子。从android 3.0开始,android加入了JsonReader类,该类可以控制Json的读取。
下面是个例子:
1.JsonDemoActivity类
package com.wewell.json;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
//Json源数据及调用解析
public class JsonDemoActivity extends Activity {
/** Called when the activity is first created. */
private Button btn_json = null;//测试json数据
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn_json = (Button)findViewById(R.id.btnjson);
btn_json.setOnClickListener(new testJson());
}
class testJson implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
JsonUtils json = new JsonUtils();
String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
json.parseJson(jsonData);
String jsonData2 = "{\"name\":\"test\",\"age\":10}";
json.partJson2(jsonData2);
json.parseUserFromJson(jsonData);
}
}
}
2.JsonUtils类
package com.wewell.json;
import java.io.StringReader;
import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.LinkedList;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
//执行解析Json操作
public class JsonUtils {
public void partJson2(String jsonData){
Gson gson = new Gson();
User user = gson.fromJson(jsonData, User.class);//Json对象转换为对象
System.out.println("Json对象:name--->" + user.getName());
System.out.println("Json对象:age---->" + user.getAge());
}
public void parseJson(String jsonData){
try{
//如果需要解析JSON数据,首要要生成一个JsonReader对象
JsonReader reader = new JsonReader(new StringReader(jsonData));
reader.beginArray();//开始解析数组
while(reader.hasNext()){
reader.beginObject();//开始解析数组中对象
while(reader.hasNext()){
String tagName = reader.nextName();//解析键值对
if(tagName.equals("name")){
System.out.println("name--->" + reader.nextString());
}
else if(tagName.equals("age")){
System.out.println("age--->" + reader.nextInt());
}
}
reader.endObject();//结束解析数组中对象
}
reader.endArray();//结束解析数组
}
catch(Exception e){
e.printStackTrace();
}
}
public void parseUserFromJson(String jsonData){
Type listType = new TypeToken<LinkedList<User>>(){}.getType();
Gson gson = new Gson();
LinkedList<User> users = gson.fromJson(jsonData, listType);//进行Json对象转换为对象的迭代
for (Iterator iterator = users.iterator(); iterator.hasNext();) {
User user = (User) iterator.next();
System.out.println("name--->" + user.getName());
System.out.println("age---->" + user.getAge());
}
}
}
3.user类
package com.wewell.json;
/**
* 联系Json对象转为实体对象
* @author wangke
*
*/
public class User {
private String name=null;
private int age = 0;
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
相关文章推荐
- ios中解析json对象基类
- json对象的解析,jquery 解析json
- javascript如何解析json对javascript如何解析json对象并动态赋值到select列表象并动态赋值到select列表
- json-lib 解析 Hibernate pojo 对象错误...
- Alamofire,SwiftJSON,MJExtension,解析Json获取对象,带参数上传图片
- 解析json对象,使用的类库jsonkit,但解析完成后,再次使用解析的数据时会导致tableview崩溃
- Java解析JSON对象
- Java解析Json对象
- javascript_解析json对象
- 复选框选中table一行的数据,并组成JSON数组对象传递到后台,在后台解析遍历
- 解析json并存入对象,然后逐行打印对象的属性
- Gson 常见json对象的解析
- java代码解析json对象获取json对象属性值
- ejs 模板中 json 对象在 js 中的解析
- asp.net使用DataContractJsonSerializer将对象解析为JSON
- javascritp 传入对象或数组生成json字符串 解析json字符串
- Memcached中对象反序列化和json字符串用jackson解析成对象的比较
- Java解析Json字符串--复杂对象
- 【解决问题】解析服务器端返回的JSONObject对象
- java 解析Json对象(嵌套json数组)