我有一組JSON字符串,其中每個JSON字符串都有一個鍵。現在,我想將這些JSON字符串存儲在設備上,以便以後可以使用這些數據。 這裏我沒有在設備上存儲任何對象。 我可以使用CoreData還是有其他選擇嗎? 在設備上存儲JSON的最佳做法是什麼?使用CoreData存儲JSON字符串
回答
JSON只是爲服務器和客戶端(您的應用程序)之間的快速傳輸定義緊湊型數據格式。
你需要做的是將JSON數據從服務器解碼爲數據類型NSDictionary,NSArray,NSString ...然後如果你想存儲它們,使用plist,sqlite或者CoreData來存儲。
對於CoreData,您需要創建與JSON格式關聯的實體。
例:「關鍵」:「值」 - >的NSDictionary
由於我只存儲了一組JSON字符串,在CoreData,sqlite,file和plist中,哪個更適合使用? – satyanarayana 2013-04-21 15:09:43
plist,最簡單 – strong 2013-04-21 22:36:48
你也可以簡單的JSON保存到一個文件,當你需要它旁邊再反序列化。
如果你沒有太多的數據存儲,你可以使用plist或json。 Plist會更容易,如果你存儲json,你需要多行代碼。
創建一個DataHelper類,其中包含保存,添加,查找全部,findFirtWithValue:forObject:的方法。
下面是一個簡單
#define kPlistFilePath @"Data.plist"
#define kJsonFilePath @"Data.json"
@implementation DataController
+ (NSString *)savedFilePath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = paths[0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:kPlistFilePath];
return filePath;
}
+ (NSArray *)findAll
{
NSString *filePath = [self savedFilePath];
return [NSArray arrayWithContentsOfFile:filePath];
}
+ (void)saveJSON:(id)object
{
NSString *filePath = [self savedFilePath];
NSArray *unsavedArray = nil;
if ([object isKindOfClass:[NSString class]]) {
NSError *error = nil;
unsavedArray = [NSJSONSerialization JSONObjectWithData:[object dataUsingEncoding:NSUTF8StringEncoding]
options:NSJSONReadingMutableContainers|NSJSONReadingAllowFragments
error:&error];
}else if([object isKindOfClass:[NSArray class]]){
unsavedArray = object;
}else if([object isKindOfClass:[NSDictionary class]]){
unsavedArray = @[object];
}
if ([unsavedArray count]) {
[unsavedArray writeToFile:filePath atomically:NO];
}
}
+ (NSDictionary *)userInfoForID:(NSString *)userID
{
NSArray *allData = [self findAll];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userid = %@",userID];
return [[allData filteredArrayUsingPredicate:predicate]lastObject];
}
- 1. $ .post以json格式使用變量來存儲json字符串?
- 2. 使用Coredata保存Json字典
- 3. 使用Strtok存儲一串字符串
- 4. jQuery.cookie不存儲我的JSON字符串
- 5. 存儲JSON數組字符串elasticsearch Bug
- 6. 存儲靜態JSON字符串成字符串
- 7. coredata - 將內容另存爲json字符串或nsdata
- 8. 存儲字符串並使用JSON抓取
- 9. 如何在PHP中使用PHP存儲原始json字符串?
- 10. 存儲整個JSON字符串在MySQL數據庫使用PHP
- 11. 如何使用PHP在cookie中存儲大型JSON字符串
- 12. 存儲字符串
- 13. 存儲字符串
- 14. 存儲字符串
- 15. 使用ArrayList來存儲字符串
- 16. 使用FormsAuthentication.SetAuthCookie存儲加密字符串
- 17. 在字符串內存儲字符串?
- 18. 在字符串中存儲字符串
- 19. iOS swift:使用coredata存儲緩存(cloudkit)
- 20. JSON使用json字符串將對象字符串化爲值
- 21. 存儲XML爲字符串
- 22. Jasmin ByteCode存儲字符串
- 23. 存儲在字符串
- 24. 存儲連接字符串
- 25. 字符串常量存儲
- 26. 存儲字符串中有
- 27. LINQ - 存儲爲字符串
- 28. SQL存儲字符串
- 29. 存儲字符串的my.settings
- 30. 存儲XML字符串
如果數據真的沒有與其他對象的關係,你可以嘗試使用的plist。你能展示你的JSON嗎? – Anupdas 2013-04-21 14:40:15
我的JSON會是這樣的,{「status」:「success」,「userid」:「129」,「description」:「some description」}這樣就會有很多JSON字符串需要存儲在設備上。 – satyanarayana 2013-04-21 15:20:25
如果您要創建與用戶的關係,並且此信息最好使用CoreData或Sqlite。否則你可以存儲json文件。我建議將它存儲在plist中,因爲與json相比,它更容易形成字典或數組,因此編輯它們然後再保存它,這需要更多的努力來保存它們。是否有任何其他信息需要存儲。 – Anupdas 2013-04-21 15:31:42