gpt4 book ai didi

Android - 如何将 JSON 对象添加到 sharedPreferences?

转载 作者:太空宇宙 更新时间:2023-11-03 11:43:47 27 4
gpt4 key购买 nike

我想将数据附加到现有的 JSON 对象中,并将数据作为字符串保存到具有以下结构的共享首选项中。

"results":[
{
"lat":"value",
"lon":"value"
},
{
"lat":"value",
"lon":"value"

}
]

我怎样才能做对?

我试过类似的方法,但没有成功。

// get stored JSON object with saved positions
String jsonDataString = this.getSharedPreferencesStringValue(ctx, "positions", "last_positions");

if (jsonDataString != null) {
Log.i(AppHelper.APP_LOG_NAMESPACE, "JSON DATA " + jsonDataString);
JSONObject jsonData = new JSONObject(jsonDataString);
jsonData.put("lat", lat.toString());
jsonData.put("lon", lon.toString());
jsonData.put("city", city);
jsonData.put("street", street);
jsonData.put("date", appHelper.getActualDateTime());
jsonData.put("time", appHelper.getActualDateTime());
this.setSharedPreferencesStringValue(ctx, "positions", "last_positions", jsonData.toString());
} else {
this.setSharedPreferencesStringValue(ctx, "positions", "last_positions","{}");
}

感谢您的任何建议。

最佳答案

我认为实现该目标的更简单方法是使用 Gson .

如果你正在使用 gradle,你可以将它添加到你的依赖项中

compile 'com.google.code.gson:gson:2.2.4'

要使用它,您需要为需要加载的对象定义类。在您的情况下,它将是这样的:

// file MyObject.java
public class MyObject {
List<Coord> results = new ArrayList<Coord>();

public static class Coord {
public double lat;
public double lon;
}

然后只要您需要,就可以使用它来往于 Json:

String jsonDataString = this.getSharedPreferencesStringValue(ctx, "positions", "last_positions");
Gson gson = new Gson();
MyObject obj = gson.fromJson(jsonDataString, MyObject.class);
// Noew obj contains your JSON data, so you can manipulate it at your will.
Coord newCoord = new Coord();
newCoord.lat = 34.66;
newCoord.lon = -4.567;
obj.results.add(newCoord);
String newJsonString = gson.toJson(obj);

关于Android - 如何将 JSON 对象添加到 sharedPreferences?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23717083/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com