User的对象user和json字符串之间的转换用谷歌的Gson类,Gson gson = new Gson();
user->json:
gson.toJson(user);
json->user
gson.fromJson(json,user.class);
jsons中包含多个user时,可以转换为List<User> users;
users = gson.fromJson(jsons, new TypeToken<List<User>>(){}.getType());
jsons中包含对个不同对象,比如有Result和User两个类的对象,这时字符串转换为对象要用到JSONArray,具体用法看下面例子中对字符串str3的处理过程
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class JsonTest {
/**只包含一个User对象的json字符串*/
static String str1 = "{\"name\":\"微软\",\"age\":20}";
/**包含两个User对象的json字符串*/
static String str2 = "[{\"name\":\"微软\",\"age\":20},{'name':'谷歌','age':23}]";
/**包含一个Result对象和两个User对象的json字符串*/
static String str3 = "[{'state':0,'reason':'注册成功'}," +
"{'name':'谷歌','age':23}," +
"{'name':'微软','age':20}]";
/**google的json转换工具,能将对象转换为json字符串,也可以将json字符串还原为对象*/
static Gson gson = new Gson();
public static void main(String[] args){
//json包含单个对象,解析为单个对象
User user = null;
user = gson.fromJson(str1,User.class);
System.out.println(str1+"\n解析为对象:\n"+user.toString()+"\n\n");
//json包含多个相同对象,解析为对象list
System.out.println(str2+"\n解析为对象list:");
List<User> users1 = gson.fromJson(str2, new TypeToken<List<User>>(){}.getType());
for(User u:users1){
System.out.println(u.toString());
}
//将对象list转换为json
String jsons = gson.toJson(users1);//这个users1是上面生成的List<User>
System.out.println("\n\nList<User> users1 转换为json字符串:\n"+jsons);
//不同对象解析为list
List<User> users2 = new ArrayList<User>();
State state = null ;
JSONArray jsonarray = null;
try {
jsonarray = new JSONArray(str3);
for(int i = 0;i<jsonarray.length();i++){
//这里已知str3中包含User和State两种对象,并且str3中第一个对象是State,其余都是User
if(i==0){
state = gson.fromJson(jsonarray.getJSONObject(i).toString(), State.class);
}
else {
User u = null;
u = gson.fromJson(jsonarray.getJSONObject(i).toString(), User.class);
users2.add(u);
}
}
System.out.println("\n\n"+str3+"\n解析为对应对象:");
System.out.println(state.toString());
for(User u:users2){
System.out.println(u.toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
}
public class State{
public int state;
public String reason;
@Override
public String toString() {
return "状态:\n state=" + state + ", reason=" + reason;
}
}
public class User{
public int age;
public String name;
@Override
public String toString() {
return "用户:\n name=" + name + ", age=" + age;
}
}
}
运行结果:
{"name":"微软","age":20}
解析为对象:
用户:
name=微软, age=20
[{"name":"微软","age":20},{'name':'谷歌','age':23}]
解析为对象list:
用户:
name=微软, age=20
用户:
name=谷歌, age=23
List<User> users1 转换为json字符串:
[{"age":20,"name":"微软"},{"age":23,"name":"谷歌"}]
[{'state':0,'reason':'注册成功'},{'name':'谷歌','age':23},{'name':'微软','age':20}]
解析为对应对象:
状态:
state=0, reason=注册成功
用户:
name=谷歌, age=23
用户:
name=微软, age=20
用到的Gson.jar和org.json.jar下载地址