在'获取未终止的对象当试图从JSON获取某些键的值时

时间:2017-11-10 15:28:54

标签: android json firebase android-json

这里是json结构:

{userModel={name=Mark Kohl Mundi, photo_profile=***}, message=hi, timeStamp=1510326004316, newMsgIndicator=0}

这是我尝试的内容:

for (DataSnapshot childrenSnapshot: dataSnapshot.getChildren()) {
    try {
        JSONObject reader = new JSONObject(childrenSnapshot.getValue().toString());
        String a = reader.getString("newMsgIndicator");
        Log.d("A", String.valueOf(a));
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

这是我得到的:

org.json.JSONException: Unterminated object at character 23 of {userModel={name=Mark Kohl Mundi, photo_profile=***}, message=hi, timeStamp=1510326004316, newMsgIndicator=0}

我知道错误是因为键的值没有双引号("")。

我想知道如何在json中插入双引号。

1 个答案:

答案 0 :(得分:1)

您无需使用JSONObject即可从Firebase数据库获取数据。 Firebase数据库的结构为键和值对,这意味着数据库中的每个节点都是Map。所以我没有使用JSONObject,而是使用这行代码重新编写代码:

Map<String, Object> map = (Map<String, Object>) childrenSnapshot.getValue();

拥有此地图后,您可以立即迭代以获取相应的数据。

如果您的引用指向特定用户对象(节点),要获取实际名称,请使用以下代码:

String name = childrenSnapshot.child("name").getValue(String.class);