簡體   English   中英

我可以向 Firebase 遠程配置聲明一個數組嗎?

[英]Can I declare an array to Firebase Remote config?

我是Android和Firebase的新手。是否可以在Firebase Remote Config的Parameter key里面聲明一個數組? 在此處輸入圖像描述

我想為某些特定型號/移動設備提供一些促銷活動。 因此,如果我可以聲明一系列型號(即三星 J5、小米 Note2 等),我可以輕松地在這些型號上啟用促銷。 請幫我。

遠程配置最近添加了通過將鍵值列表保存為 JSON 格式來保存鍵值列表的選項。

在此處輸入圖片說明

示例用法:

1.遠程配置中存儲的Json:

 [
      {
        "lesson": "1",
        "versionCode": 2
      },
      {
        "lesson": "2",
        "versionCode": 4
      },
      {
        "lesson": "3",
        "versionCode": 1
      }
 ]

2.Kotlin模型

data class Lesson(val lesson: Int, val versionCode: Int)

3.檢索json

String object = FirebaseRemoteConfig.getInstance().getString("test_json");
Gson gson = new GsonBuilder().create();
List<Lesson> lessons = gson.fromJson(object, new TypeToken<List<Lesson>>(){}.getType());

Firebase 遠程配置中的所有值最終都存儲為字符串。 布爾值、數字等都歸結為字符串。 當您請求為其他類型時,SDK 將僅解析該字符串值。

遠程配置中沒有“本機”數組。 如果您想要在遠程配置參數中包含一系列有序值,您應該以一種可以從字符串值中解析出來的方式來表示它(例如 JSON 或一些簡單的分隔字符串)。

道格的答案相同,但帶有代碼。

這是在 Swift 中,但您仍然應該了解漂移。

對於數組,使用分隔字符串,例如

"iron,wood,gold"並使用.components(separatedBy: ",")將其拆分為字符串數組

對於字典,使用“雙重”分隔的字符串,例如

"iron:50, wood:100, gold:2000"

使用

    var actualDictionary = [String: Int]()

    // Don't forget the space after the comma
    dictionaryString.components(separatedBy: ", ").forEach({ (entry) in
    let keyValueArray = entry.components(separatedBy: ":")
            return actualDictionary[keyValueArray[0]] = Int(keyValueArray[1])
    })

    return actualDictionary

我喜歡N Kuria 的回答,但這需要您的 json 中的空格准確無誤。 如果你想要一些更容錯的東西,這里是通過 JSONSerialization 讀入整數數組的代碼。

假設您的 json 中有這個整數數組:

 { "array": [1, 5, 4, 3] }
func getArray() -> [Int] {

    let jsonString = "{\"array\": [1, 5, 4, 3]}"
    let array = [Int]()

    guard let data = jsonString.data(using: .utf8) else { return array }
    if let json = try? JSONSerialization.jsonObject(with: data, options: .mutableContainers) {
        guard let theArray = json as? [String: [Int]] else { return array }
        return theArray.first?.value ?? array

        // If you were reading in objects instead of ints, you would do
        // for (key, value) in theArray { /* append values to array */ }
    }

    return array
}

或者,如果您正在讀取類類型的值,則可以僅枚舉字典並在每次迭代時附加到數組。 (請參閱第一次返回下方的評論。)

Firebase 將 arrays 存儲為以整數作為鍵名的對象。 如果您使用數據類型 JSON 並使用帶有順序鍵的 object,您可以獲得從遠程配置返回的數組。 例如...

默認值:

{
  "0": "A",
  "1": "B",
  "2": "C",
  "3": "D",
}

返回為["A","B","C","D"]

請注意,它們必須是順序鍵! 因此,如果值為:

{
  "0": "A",
  "2": "B",
  "3": "C",
  "4": "D",
}

它將返回為["A", undefined, "B", "C","D"]

您可以在 Firebase 中閱讀更多關於 Arrays 的信息 => https://firebase.blog/posts/2014/04/best-practices-arrays-in-firebase

我還推薦 JSON - 因為您可以在解析 JSON 時進行某種錯誤檢測。 通過拆分,您永遠不會知道這是否會生成正確的數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM