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.csdn.net/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.csdn.net/my)