无需安装Firebase库,如何获取Firestore数据并转为简洁JSON?
处理Firestore REST API返回数据,转为简单键值对格式
核心思路是遍历API返回结果中的fields对象,提取每个字段对应的实际值(忽略Firestore的类型标识字段,如stringValue)。以下是具体实现方案:
通用逻辑
- 从API返回的JSON结构中提取
fields属性 - 遍历
fields的每个键值对 - 对每个值对象,获取其中唯一的类型键(如
stringValue、integerValue、booleanValue等),取出对应的值 - 将原字段键与提取的值存入新的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
相关产品推荐
相关产品推荐

