在App Inventor中从Firebase获取的非标准数据格式识别及转JSON问询
App Inventor Firebase返回格式解析与JSON转换方案
嘿,我来帮你理清这个问题~
这个格式到底是什么?
你拿到的{ a=1 , b=2, c=3}其实是App Inventor中Firebase组件返回的自定义键值对字符串。本质上是App Inventor底层的Java代码,把Firebase返回的键值对集合(类似HashMap这种键值容器)直接调用toString()方法生成的输出,它属于一种简化的属性列表格式,不是任何标准的序列化格式(比如JSON、XML)。
为什么直接替换=为:没用?
你说的没错,直接替换后得到的{a:1 , b:2, c:3}根本不是合法的JSON——标准JSON有两个硬性要求:
- 所有的键必须用双引号包裹
- 字符串类型的值也必须用双引号包裹(数字、布尔值这类不用)
直接替换符号后,键没有双引号,不符合JSON规范,自然无法被标准JSON解析器识别。
怎么转换成标准JSON?
你可以用App Inventor自带的字符串操作组件,分几步手动处理:
- 去除首尾大括号:把字符串开头的
{和结尾的}删掉,得到a=1 , b=2, c=3 - 分割键值对:按逗号分割字符串,同时记得去掉每个元素前后的空格,得到
["a=1", "b=2", "c=3"]这样的列表 - 拆分键与值:对列表里的每个元素,按
=分割,同样去掉键和值前后的空格,得到单独的键(比如a)和值(比如1) - 格式化键值对:给键加上双引号,值如果是字符串就也加双引号(数字/布尔值不用),然后用
:连接,变成"a":1、"b":2这种格式 - 拼接成JSON:把所有处理好的键值对用逗号连接,再给整体加上首尾的
{},最终就能得到合法的JSON:{"a":1, "b":2, "c":3}
内容的提问来源于stack exchange,提问作者Farooq Sultan
相关产品推荐
相关产品推荐

