解析 mongoDB json 对象

Parse and mongoDB json Object

我在我的 android 应用程序中使用 Parse API 和 mongoDB。在我的数据库中,我将一些值存储在 JSON 对象中,如下所示:

"address": {
    "state": "blabla",
    "zipcode": 00000,
    "lane": "blabla",
    "city": "bla"
}

保存就像一个魅力:

   try{
       JSONObject address = new JSONObject();
       address.put("lane",mLane);
       address.put("zipcode",mZipCode);
       address.put("city",mCity);
       address.put("state",mState);
       user.put("address", address);
       user.saveInBackground();
       Toast.makeText(getContext(),"SAvedSuccessfully",Toast.LENGTH_SHORT).show();
     } catch (JSONException j){
         Toast.makeText(getContext(),"Error " +j,Toast.LENGTH_SHORT).show();
     }

但我不知道如何在我的代码中检索这些数据。它总是 returns 一个空值。它与其他非 JSON 对象值完美配合。

JSONObject obj = new JSONObject();
obj = ParseUser.getCurrentUser.getJSONObject("address");

此处obj为空...

如有任何帮助,我们将不胜感激!

你甚至可以:先把Parse改成SharedPreferences

创建分享

public void putUser (String key, String value ) {
    SharedPreferences pref = getSharedPreferences("YourPref", MODE_PRIVATE);
    SharedPreferences.Editor editor = pref.edit();
    editor.putString(key, value);
    editor.commit();
}

接下来创建 JSONObject

JSONObject address = new JSONObject();
address.put("lane", "l");
address.put("zipcode", "z");
address.put("city", "c");
address.put("state", "s");
putUser("address", address.toString());

结束获取 JSONObject

public String getUser (String key) {
    SharedPreferences pref = getSharedPreferences("YourPref", MODE_PRIVATE);
    return pref.getString(key, "");
}

JSONObject addressObject = new JSONObject(new String(getUser("address")));
if(addressObject != null) {
    addressObject.getString("lane");
    addressObject.getString("zipcode");
    addressObject.getString("city");
    addressObject.getString("state");
}

看看这个例子。

ParseObject gameScore = new ParseObject("GameScore");
gameScore.put("score", 1337);
gameScore.put("playerName", "Sean Plott");

gameScore.put("cheatMode", false);
gameScore.saveInBackground()`;

我会使用 Gson 转换为字符串然后存储在解析中。

Gson gson = new Gson();
String json = gson.toJson(address);
user.put("address",json);

现在获取数据。

Type type = new TypeToken<JSONObject>(){}.getType();
String json = ParseUser.getCurrentUser.getJSONObject("address");
JSONObject data = gson.fromJson(type,json);

好吧,感谢@Caspain,我弄明白了!要将数据保存到数据库,请使用:

    ParseUser user = ParseUser.getCurrentUser();
    JSONObject address = new JSONObject();
    Gson gson = new Gson();
    try{
        address.put("lane",mLane);
        address.put("zipcode",mZipCode);
        address.put("city",mCity);
        address.put("state",mState);
    } catch (JSONException j){
        Log.i("TEST",j.toString());
    }
    String json = gson.toJson(address);
    user.put("address", json);
    user.saveInBackground();

并检索数据:

String json = ParseUser.getCurrentUser().getJSONObject("address").toString();
    try{
        JSONObject data = new JSONObject(json);
        String lane = data.getString("lane"); // do whatever with your JSON Object
    }catch (JSONException j){
        Log.i("Erreur",j.toString());
    }