解析和MongoDB JSON对象



我正在使用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();
     }

,但我无法弄清楚如何在代码中检索这些数据。它总是返回零值。它与其他非JSON对象值完美搭配。

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

这里的obj为null ...

任何帮助将不胜感激!

查看此示例。

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);

您甚至可以:首先将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");
}

okey,我对@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());
    }

最新更新