【问题标题】:Cloud function sending json as map云函数将 json 作为地图发送
【发布时间】:2022-11-30 05:06:22
【问题描述】:

我正在通过邮递员将 json 发送到云函数并且它工作正常,我如何将与地图相同的 json 发送到云函数:

通过邮递员发送:

{
    "data": {
        "users": [
            {
                "phone": "55512345"
            },
            {
                "phone": "972525276676"
            },
            {
                "phone": "55512347"
            }
        ]
    }
}

通过安卓发送:

 private fun addMessage(): Task<String>? {
        val usr1 = User("55512345")
        val usr2 = User("972525276676")
        val usr3 = User("55512347")
        val userList = listOf(usr1,usr2,usr3)

        val data: MutableMap<String, Any> = HashMap()
        data["users"] = userList

        functions.getHttpsCallable("getUsers")
            .call(data)
            .addOnFailureListener {
                Log.d("DTAG", it.toString())
            }
            .addOnSuccessListener {
                Log.d("DTAG","Ok: ${it.data.toString()}")
            }
        return null
    }

用户在哪里:

 data class User(var phone:String)

云端功能:

exports.getUsers = functions.https.onRequest(async (request, response) => {
    const data = request.body.data;
    if (data !== null && data.users !== null) {
    const users = data.users;
    const phonelist = users.map(user => user.phone.toString());
    const userlist = []

    const snapshot = await db.collection("users").get()
    snapshot.docs.forEach((userDoc) => {
        const phone = userDoc.get("phone")
        if(phone === null) return;
        const isContain = phonelist.reduce((acc, num) => acc || phone.includes(num), false)
        if(isContain) {
            userlist.push(userDoc.data())
        }
    })
    response.status(200).json({result: userlist})
    }     else{
       response.sendStatus(403)
    }
});

错误:

对象无法在 JSON 中编码:User(phone=55512345)

【问题讨论】:

    标签: android firebase kotlin google-cloud-functions


    【解决方案1】:

    该错误告诉您客户端 SDK 不知道如何处理 User 类。您必须从数据中构建一个 Map&lt;String, Object&gt;

    val userMap1 = mapOf("phone" to "55512345")
    ...
    val userList = listOf(userMap1, ...)
    
    

    【讨论】:

      猜你喜欢
      • 2022-11-29
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-22
      • 2019-04-19
      • 2016-07-30
      相关资源
      最近更新 更多