废话少说,直接进入主题。
在给android应用编写单元测试用例的时候,需要做如下操作:
1.在AndroidManifest.xml中添加标签:
<application>
<uses-library android:name="android.test.runner" />
</application>
<instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.gsontest">
</instrumentation>
2.编写的测试用例类继承AndroidTestCase
public class MainTest extends AndroidTestCase
使用GSON解析Json字符串的步骤:
1.首先需要将json字符串映射成对应的类,成员变量名尽量使用json字符串里面的键
2.实例化GSON对象
Gson gson = new Gson();
Status status = gson.fromJson(str, Status.class);
这里的Status就是对应的json字符串里面的对象
比如有如下字符串:
String str = "{"
+ "\"error\": 0,"
+ "\"status\": \"success\","
+ "\"date\": \"2014-05-10\","
+ "\"results\":["
+ "{"
+ "\"currentCity\":\"南京\","
+ "\"weather_data\":["
+ "{"
+ "\"date\":\"周六(今天, 实时:19℃)\","
+ "\"dayPictureUrl\": \"http://api.map.baidu.com/images/weather/day/dayu.png\","
+ "\"nightPictureUrl\": \"http://api.map.baidu.com/images/weather/night/dayu.png\","
+ "\"weather\": \"大雨\","
+ "\"wind\": \"东南风5-6级\","
+ "\"temperature\": \"18℃\""
+ "},"
+ "{"
+ "\"date\": \"周日\","
+ "\"dayPictureUrl\": \"http://api.map.baidu.com/images/weather/day/zhenyu.png\","
+ "\"nightPictureUrl\": \"http://api.map.baidu.com/images/weather/night/duoyun.png\","
+ "\"weather\": \"阵雨转多云\"," + "\"wind\": \"西北风4-5级\","
+ "\"temperature\": \"21 ~ 14℃\"" + "}" + "]" + "}" + "]"
+ "}";
分析上面的json字符串,可以将其映射成三个类,Status类、Results类、WeatherData类
public class Status {
private String error;
private String status;
private String date;
private List<Results> results;
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public List<Results> getResults() {
return results;
}
public void setResults(List<Results> results) {
this.results = results;
}
@Override
public String toString()
{
return "Status [error=" + error + ", status=" + status
+ ", date=" + date + ", results=" + results + "]";
}
}
public class Results {
private String currentCity;
<span style="color:#FF0000;">private List<WeatherData> weather_data</span>;
public String getCurrentCity() {
return currentCity;
}
public void setCurrentCity(String currentCity) {
this.currentCity = currentCity;
}
public List<WeatherData> getWeather_data() {
return weather_data;
}
public void setWeather_data(List<WeatherData> weather_data) {
this.weather_data = weather_data;
}
@Override
public String toString()
{
return "Results [currentCity=" + currentCity + ", weather_data="
+ weather_data + "]";
}
}
public class WeatherData {
private String date;
private String dayPictureUrl;
private String nightPictureUrl;
private String weather;
private String wind;
private String temperature;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getDayPictureUrl() {
return dayPictureUrl;
}
public void setDayPictureUrl(String dayPictureUrl) {
this.dayPictureUrl = dayPictureUrl;
}
public String getNightPictureUrl() {
return nightPictureUrl;
}
public void setNightPictureUrl(String nightPictureUrl) {
this.nightPictureUrl = nightPictureUrl;
}
public String getWeather() {
return weather;
}
public void setWeather(String weather) {
this.weather = weather;
}
public String getWind() {
return wind;
}
public void setWind(String wind) {
this.wind = wind;
}
public String getTemperature() {
return temperature;
}
public void setTemperature(String temperature) {
this.temperature = temperature;
}
@Override
public String toString() {
return "Weather [date=" + date + ", dayPictureUrl="
+ dayPictureUrl + ", nightPictureUrl="
+ nightPictureUrl + ", weather=" + weather
+ ", wind=" + wind + ", temperature=" + temperature
+ "]";
}
}
然后直接使用GSON解析:
Gson gson = new Gson();
Status status = gson.fromJson(str, Status.class);
System.out.println("status=" + status);
System.out.println("------------------------------");
List<Results> results = status.getResults();
System.out.println("results=" + results);
System.out.println("------------------------------");
List<WeatherData> weatherData = null;
for(Results result : results){
weatherData = result.getWeather_data();
System.out.println("weatherData=" + weatherData);
}
注:
1.json字符串的格式必须正确,不然会报错 unterminated object at line
1.当json字符串里面的值为空的时候,会报错 Expected value;
以上json字符串和解析思路来自于:http://blog.csdn.net/tkwxty/article/details/34474501