如何使用Gson库将JSON字符串转换为自定义类JsonLog
的ArrayList
?基本上,JsonLog
是一个由我的安卓应用生成的不同类型的日志实现的接口--短信日志、通话日志、数据日志--而这个ArrayList
是所有这些日志的集合。我一直在第6行得到一个错误。
public static void log(File destination, JsonLog log) {
Collection<JsonLog> logs = null;
if (destination.exists()) {
Gson gson = new Gson();
BufferedReader br = new BufferedReader(new FileReader(destination));
logs = gson.fromJson(br, ArrayList<JsonLog>.class); // line 6
// logs.add(log);
// serialize "logs" again
}
}
似乎编译器不理解我指的是一个类型化的ArrayList
。我做什么好?
发布于 2015-02-23 17:14:42
您的JSON示例如下:
{
"status": "ok",
"comment": "",
"result": {
"id": 276,
"firstName": "mohamed",
"lastName": "hussien",
"players": [
"player 1",
"player 2",
"player 3",
"player 4",
"player 5"
]
}
因此,如果你想在SharedPrefrences中保存模块的数组列表,那么:
1-将使用此方法将返回的arraylist转换为json格式
public static String toJson(Object jsonObject) {
return new Gson().toJson(jsonObject);
}
2-将其保存在共享前置文件中
PreferencesUtils.getInstance(context).setString("players", toJson((.....ArrayList you want to convert.....)));
3-随时从共享首选项中获取JsonString
String playersString= PreferencesUtils.getInstance(this).getString("players");
4-再次转换为数组列表
public static Object fromJson(String jsonString, Type type) {
return new Gson().fromJson(jsonString, type);
}
ArrayList<String> playersList= (ArrayList<String>) fromJson(playersString,
new TypeToken<ArrayList<String>>() {
}.getType());
如果你想解析对象的ArrayList,这个解决方案也是可行的,希望它能通过使用Gson Library对你有所帮助。
发布于 2018-12-12 20:59:19
如果你想使用数组,那就很简单了。
logs = gson.fromJson(br, JsonLog[].class); // line 6
以阵列JsonLog[].class
的形式提供JsonLog
发布于 2018-11-20 11:28:26
我对gson不太确定,但这就是你用Jon.sample做这件事的方式,希望用gson也能有类似的方式。
{ "player“:"player 1","player 2","player 3","player 4",”player 5“}
===============================================
import java.io.FileReader;
import java.util.List;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class JosnFileDemo {
public static void main(String[] args) throws Exception
{
String jsonfile ="fileloaction/fileName.json";
FileReader reader = null;
JSONObject jsb = null;
try {
reader = new FileReader(jsonfile);
JSONParser jsonParser = new JSONParser();
jsb = (JSONObject) jsonParser.parse(reader);
} catch (Exception e) {
throw new Exception(e);
} finally {
if (reader != null)
reader.close();
}
List<String> Players=(List<String>) jsb.get("Players");
for (String player : Players) {
System.out.println(player);
}
}
}
https://stackoverflow.com/questions/12384064
复制相似问题