我有一组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