[英]How can I get array json value from Firebase remote-config ?(Swift)
[英]Can I declare an array to Firebase Remote config?
遠程配置最近添加了通過將鍵值列表保存為 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.