【问题标题】:Firebase cloudfunctions object can not be encoded with json androidFirebase 云函数对象不能用 json android 编码
【发布时间】:2020-04-12 23:33:47
【问题描述】:

我正在尝试将我刚刚录制的音乐文件传递到 Firebase 中的云功能,但每次尝试上传时都会收到错误消息:

对象不能用 JSON 编码:/storage/emulated/0/tempRecordFile.wav

我的代码:

Map<String, Object> data = new HashMap<>();
    data.put("sound", soundFile);
    return firebaseFunctions.getHttpsCallable("soundFunction")
                            .call(data)
                            .continueWith(new Continuation<HttpsCallableResult, Boolean>() {
                                @Override
                                public Boolean then(@NonNull Task<HttpsCallableResult> task) throws Exception {
                                    return (boolean) Objects.requireNonNull(task.getResult()).getData();
                                }
                            });

【问题讨论】:

    标签: android json firebase google-cloud-functions firebase-storage


    【解决方案1】:

    您传递给可调用 Cloud Functions 的参数必须是有效的 JSON 值。您正在尝试将 File 作为 sound 参数传递,而 File 不是有效的 JSON 类型。

    如果要将文件路径传递给 Cloud Function,则将其作为字符串传递:

    data.put("sound", soundFile.getPath());
    

    如果要将声音文件的内容传递给 Cloud Function,则必须将内容读入内存,然后以 JSON 兼容类型传递。这通常使用 base-64 编码来完成。


    我能很快想到的最后一个选项,是通过 Firebase SDK 将二进制数据上传到 Cloud Storage,然后将路径作为字符串传递给 Cloud Function。

    为此,请参阅 Firebase 文档中的 upload data from a file,然后将 StorageReference.getPath() 传递给 Cloud Function。

    【讨论】:

      猜你喜欢
      • 2021-07-16
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 2018-03-31
      • 2012-03-29
      • 1970-01-01
      相关资源
      最近更新 更多