You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需安装Firebase库,如何获取Firestore数据并转为简洁JSON?

处理Firestore REST API返回数据,转为简单键值对格式

核心思路是遍历API返回结果中的fields对象,提取每个字段对应的实际值(忽略Firestore的类型标识字段,如stringValue)。以下是具体实现方案:

通用逻辑

  1. 从API返回的JSON结构中提取fields属性
  2. 遍历fields的每个键值对
  3. 对每个值对象,获取其中唯一的类型键(如stringValue、integerValue、booleanValue等),取出对应的值
  4. 将原字段键与提取的值存入新的Map/JSON对象

代码示例

JavaScript/Node.js

function convertFirestoreFields(fields) {
  const result = {};
  for (const [key, valueObj] of Object.entries(fields)) {
    const valueKey = Object.keys(valueObj)[0];
    result[key] = valueObj[valueKey];
  }
  return result;
}

// 示例调用
const apiResponse = {
  "name": "projects/$ProjectId/databases/(default)/documents/$path",
  "fields": {
    "Key1": {"stringValue": "Value!"},
    "Key2": {"stringValue": "Value2"},
    "Key3": {"stringValue": "value3"}
  }
};

const simplifiedData = convertFirestoreFields(apiResponse.fields);
console.log(simplifiedData);
// 输出: { Key1: 'Value!', Key2: 'Value2', Key3: 'value3' }

Python

def convert_firestore_fields(fields):
    result = {}
    for key, value_obj in fields.items():
        # 获取值对象中的唯一类型键
        value_key = next(iter(value_obj.keys()))
        result[key] = value_obj[value_key]
    return result

# 示例调用
api_response = {
    "name": "projects/$ProjectId/databases/(default)/documents/$path",
    "fields": {
        "Key1": {"stringValue": "Value!"},
        "Key2": {"stringValue": "Value2"},
        "Key3": {"stringValue": "value3"}
    }
}

simplified_data = convert_firestore_fields(api_response["fields"])
print(simplified_data)
# 输出: {'Key1': 'Value!', 'Key2': 'Value2', 'Key3': 'value3'}

补充说明

Firestore REST API返回的每个字段值对象只会包含一个类型标识键(比如字符串用stringValue,数字用integerValue或doubleValue,布尔值用booleanValue),因此上述逻辑可以兼容所有数据类型的转换。

内容的提问来源于stack exchange,提问作者sudhanshu shaurya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:37:47