当前位置: 代码迷 >> Android >> Android - 将字符串转换为列表以推送到 Firebase 实时数据库
  详细解决方案

Android - 将字符串转换为列表以推送到 Firebase 实时数据库

热度:81   发布时间:2023-08-04 12:35:51.0

有没有办法将下面的字符串转换为列表? 扫描二维码后检索此字符串。

CashRequest{
    orderid='0',
    user_id='nvHt2U5RnqUwXB4ZK37Zn1DXPV82',
    userName='username',
    userEmail='whateveremailthisis@email.blabla',
    fullName='full name',
    phoneNumber=0,
    totalCash='$304.00',
    totalRV='$34.00', 

    foods=[
        Order{
            userID='nvHt2U5RnqUwXB4ZK37Zn1DXPV82',
            ProductID='-LMDiT7klgoXU8bQEM-4',
            ProductName='Coke',
            Quantity='4',
            Price='1',
            RedemptionPrice='10',
            RedemptionValue='1'},
        Order{
            userID='nvHt2U5RnqUwXB4ZK37Zn1DXPV82',
            ProductID='1000',
            ProductName='Kunau Ring Ring Pradu',
            Quantity='3',
            Price='100',
            RedemptionPrice='10',
            RedemptionValue='10'
        }
    ]
}

所需的输出是将其存储在 firebase 实时数据库中,如下所示:

那么你有几个选择。 由于它是值之间的换行符,您可以使用简单的换行符读取并比较它是否以“您正在寻找的保留字”开头,然后是从那里开始的子字符串,但这可能会变得混乱和大量膨胀代码。

最简单的方法是先进行已知的替换。 制作一个方法,用引号包围的 json 键替换所有坏的 json 键,例如:

 val myJsonCorrected = yourStringAbove.replace("Order", "\"Order"\")

对所有已知实体重复,直到将其转换为有效的 json。 单个刻度对值来说很好,但键也需要引号。

然后简单地创建一个与 json 格式匹配的对象。

class CashRequestModel{
      @SerializableName("orderid")
      var orderID: Int? = null
      etc.....
      @SerializableName("foods")
      var myFoods: ArrayList<OrderModel>? = null
}

class OrderMode {
     @SerializableName("userID")
     var userID: String? = null
     @SerializableName("ProductID")
     var userID: String? = null
     etc..
}

然后只需将其转换为 JSON

val cashRequest = getGson().fromJson(cleanedUpJson, classTypeForCashRequest);

和你的完成。 现在只需使用列表。 当然,如果您无需先清理即可获得有效的 JSON 会更好,但看起来键是已知的,并且您可以轻松地编写字符串替换代码以修复错误的 json,然后再将其转换为与结构匹配的对象。

希望有帮助。

  相关解决方案