JSON:需记住的几种结构“{}”代表类的对象,“[]"代表数组。数组里面可以嵌套对象,而对象也可以嵌套对象和数组。
声明:为了能够运行,文章有些地方对原文进行了改动。
转载及Json语法参考地址:(1.原文地址 2.Json语法规则参考)
1.1Java解析:(解析字符串 :令jsonData为{name:"Ian", age: "20"})
public class JsonUtils {
public void parseJson(String jsonData) {
try {
JsonReader reader = new JsonReader(new StringReader(jsonData));
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.nextString());
}
}
reader.endObject();
} catch (IOException e) {
e.printStackTrace();
}
}
}
1.2Java解析:(解析对象)
对象类:
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
解析方法:(注意必须先导入Gson的相关包http://code.google.com/p/google-gson/downloads/detail?name=google-gson-2.2.3-release.zip
并且要解压之后导入到eclipse )
注意:不能直接导入,直接导入之后虽然能够通过编译,但是运行结果会报“java.lang.NoClassDefFoundError" 以下的导入方法可以避免这种情况:
- 右键所在android项目名下的libs文件夹,Import -> General -> File System -> next 选择google-gson-2.2.3-release.zip解压后所在的路径勾选之后 ,点击 OK
- 右键你的项目,Build Path -> Configure Build Path -> Libraries -> Add JARs 然后选择你的项目名下的libs文件夹,把刚刚添加的 .jar 文件全部勾选 就添加完成了
参考链接:http://blog.youkuaiyun.com/hehe9737/article/details/7899143
public void parseUserFromJson(String jsonData) {
Gson gson =new Gson();
User user = gson.fromJson(jsonData, User.class);
System.out.println("name---------->" + user.getName());
System.out.println("age---------->" + user.getAge());
}
1.3Java解析(解析集合,令jsonData = "[{\"name\":\"Jack\",\"age\":20},{\"name\":\"Tom\",\"age\":22},{\"name\":\"Ian\",\"age\":20}]";)
public void parseUserFromJson(String jsonData) {
Type typeList = new TypeToken<ArrayList<User>>(){}.getType();
Gson gson = new Gson();
ArrayList<User> users = gson.fromJson(jsonData, typeList);
for(Iterator<User> iterator = users.iterator(); iterator.hasNext();) {
User user = iterator.next();
System.out.println("name---------->" + user.getName());
System.out.println("age---------->" + user.getAge());
}
}
2.android开发:(android调用JSonReader 在androidManifest.xml文件中必须把最小版本设置成大于等于11)
public class MainActivity extends Activity {
private Button btnStart;
private String jsonDataUser = "{\"name\":\"Ian\",\"age\":20}";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnStart = (Button)findViewById(R.id.btnStart);
btnStart.setOnClickListener(new BtnStartSetOnClickListener());
}
private class BtnStartSetOnClickListener implements OnClickListener {
@Override
public void onClick(View v) {
JsonUtils jsonUtils = new JsonUtils();
jsonUtils.parseJson(jsonData);
}
}
}
初学者,有什么错误的地方希望大家多多包涵!(顺便附上我将上面的代码整合到一个项目的代码地址:http://download.youkuaiyun.com/my)