【问题标题】:Android - Get keys in nested object FirestoreAndroid - 在嵌套对象 Firestore 中获取键
【发布时间】:2018-08-16 03:31:43
【问题描述】:

在Android中使用Firestore,是否可以读取下面嵌套对象“items”中的键?

{
    "email":"someemail@someaddress.com",
    "items": {
      "8G9RiMgx9SmDLYrQbNrN": true,
      "K19RiMr7SmDLYrQbNrN": true
    }
}

【问题讨论】:

  • 我已经添加并回答了

标签: android google-cloud-firestore


【解决方案1】:

如果您有一个代表该 JSON 结构的 Firestore DocumentSnapshot,您可以通过以下方式获取项目的键:

DocumentSnapshot document = ...

Map<String, Object> items = (Map<String, Object>) document.get("items");
Set<String> keys = items.keySet();

【讨论】:

    【解决方案2】:

    是的,你可以。试试这个代码,它:

    JSONObject data = new JSONObject("youJson");
    data = data.optJSONObject("items");
    Iterator<String> iter = data.keys();
    
    //Iterate all the keys
    while (iter.hasNext()) { 
        String key = iter.next();
        Boolean value = json.optBoolean(key); //Get the actual value 
    }
    

    【讨论】:

      【解决方案3】:

      您可以通过像这样迭代map 来实现这一点:

      yourRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
          @Override
          public void onComplete(@NonNull Task<QuerySnapshot> task) {
              if (task.isSuccessful()) {
                  for (DocumentSnapshot document : task.getResult()) {
                      Map<String, Object> items = (Map<String, Object>) document.get("items");
                      for (Map.Entry<String, Object> entry : items.entrySet()) {
                          Log.d(TAG, entry.getKey() + "/" + entry.getValue());
                      }
                  }
              }
          }
      });
      

      【讨论】:

      • 嗨,加油!你有没有试过我上面的解决方案,它有效吗?
      猜你喜欢
      • 1970-01-01
      • 2020-02-24
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 2021-12-15
      • 2016-10-31
      • 1970-01-01
      相关资源
      最近更新 更多