这里是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中插入双引号。
答案 0 :(得分:1)
您无需使用JSONObject
即可从Firebase数据库获取数据。 Firebase数据库的结构为键和值对,这意味着数据库中的每个节点都是Map
。所以我没有使用JSONObject,而是使用这行代码重新编写代码:
Map<String, Object> map = (Map<String, Object>) childrenSnapshot.getValue();
拥有此地图后,您可以立即迭代以获取相应的数据。
如果您的引用指向特定用户对象(节点),要获取实际名称,请使用以下代码:
String name = childrenSnapshot.child("name").getValue(String.class);