分类: ios2013-04-20 12:46 510人阅读 评论(0) 收藏 举报

JSON文件格式简单,使用方便,值得一用。

目前已经有多个库支持Json文件的解析,在这之中,JSONkit用起来方便,而且效率比较高,本文介绍的就是JSONKit的使用方法。

1、准备工作

下载JSONKit包:http://download.csdn.net/detail/enuola/4523160

2、写json文件

  • 创建文件

//创建文件目录以及文件,需要用到filemanager

  1. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  2. NSString *documentsDirectory = [paths objectAtIndex:0];
  3. testDirectory = [documentsDirectory stringByAppendingPathComponent:@"data"];
  4. [fileManager createDirectoryAtPath:testDirectory withIntermediateDirectories:YES attributes:nil error:nil];
  5. letterllkPath = [testDirectory stringByAppendingPathComponent:@"letterllk.json"];
  • 打开文件准备写
  1. //打开文件,需要用到NSFileHandle
  2. NSFileHandle *letterHandle = [NSFileHandle fileHandleForWritingAtPath:letterllkPath];
  • 将内容转换为json数据
JSONkit中支持以下几种数据类型转换:
  • NSString
  • NSArry
  • NSDictionary
使用起来很简单:
  1. //原始数据
  2. NSString *str = ….;
  3. NSArry *arry = ….;
  4. NSDictionary *dic = …;
  5. //转换成JSon字符串,就是将原始数据打包
  6. NSString  *strJson = [str JSONString];
  7. NSString  *arryJson = [arry JSONString];
  8. NSString  *dicJson = [dic JSONString];
  9. //或者直接转换成NSData*
  10. NSData *strData = [str JSONData];
  11. NSData *arryData = [arry JSONData];
  12. NSData *dicData = [dic JSONData];
  • 将转换后的json数据写入文本
  1. [letterHandle seekToEndOfFile];
  2. [letterHandle writeData:[strJson dataUsingEncoding:NSUTF8StringEncoding]];
  3. 或者
  4. [letterHandle writeData:strData];

3、读json文件

  • 读取文件内容
  1. NSString *filePath   =  [[NSBundle mainBundle] pathForResource:@"test" ofType:@"json"];
  2. NSString *jsonString  =   [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
  • 用json解析内容
  1. //根据json文件,逐层解析
  2. NSError *error;
  3. id rawData = [jsonString objectFromJSONStringWithParseOptions:JKParseOptionNone error:&error];
  4. if ( error != nil ) {
  5. }
  6. if ( [rawData isKindOfClass:[NSDictionary class]] )
  7. {}
  8. else if ( [rawData isKindOfClass:[NSArray class]] ) {
  9. }
  10. else {
  11. }

4、总结

Json的编码格式主要包括:

  • []代表NSArry类
  • {}代表一个对象,比如NSDictionary
  • ,代表对象分隔符
  • :代表键值对,或者可以理解为赋值=

JSONkit其实就是自动的帮你将原始数据加上这些符号,或者相反的,去除这些符号

iOS 如何用JSONKit读写JSON文件的更多相关文章

  1. python 读写json文件(dump, load),以及对json格式的数据处理(dumps, loads)

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. 1.json.dumps()和json.loads()是json ...

  2. C++通过jsoncpp类库读写JSON文件-json用法详解

    介绍: JSON 是常用的数据的一种格式,各个语言或多或少都会用的JSON格式. JSON是一个轻量级的数据定义格式,比起XML易学易用,而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择. ...

  3. python 读写 json文件

    json的优势: 1. 数据体积方面. JSON相对于XML来讲,数据的体积小,传递的速度更快些. 2. 传输速度方面. JSON的速度要远远快于XML 3. 数据格式 数据格式比较简单, 易于读写, ...

  4. java如何读写json文件

    在实际项目开发中,有时会遇到一些全局的配置缓存,最好的做法是配置redis数据库作为数据缓存,而当未有配置redis服务器时,读取静态资源文件(如xml.json等)也是一种实现方式,但是这有一个弊端 ...

  5. node读写json文件(进阶)

    该方法可用于修改配置文件,直接上代码 fs.readFile('test1.json','utf8',function (err, data) { if(err) console.log(err); ...

  6. Unity C# 使用JsonUtility读写Json文件

    本文原创,转载请注明出处:http://www.cnblogs.com/AdvancePikachu/p/7146731.html 今天,为大家分享一下unity上的Json序列化,应该一说到这个词语 ...

  7. Python3读写JSON文件

    JSON简介 JSON(JavaScript Object Notation)即JavaScript对象表示法,一种轻量级,通用的文本数据格式. JSON语法支持对象(Object),数组(Array ...

  8. Python读写Json文件

    一个小例子,使用Json配置文件 # -*- coding: utf-8 -*- import json import time def store(data): with open('data.js ...

  9. C# 使用Newtonsoft.Json读写Json文件

    { "CAN": false, "AccCode": 4294901856, "Id": 768, "BPointMove&quo ...

随机推荐

  1. golang使用sqlite

    安装问题 在import sqlite的时候,golang build 出现以下错误, exec: "gcc": executable file not found in %PAT ...

  2. 自定义asp.net mvc Filter 过滤器

    1新建一个mvc项目:如图 2.主要创建下面一些类文件 1.utility目录 放置自定义的过滤器 using System; using System.Collections.Generic; us ...

  3. mysql安装在centos7报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

    原文链接:http://blog.csdn.net/kuluzs/article/details/51924086 [问题]:mysql版本:5.7.13 首次在centos下安装MySQL,客户端连 ...

  4. IOS 通过界面图标启动Web应用 + 全屏应用 + 添加到主屏幕

    请注意!!!使用了[全屏模式之后].页面的顶部会空出一大块.而且这并不属于margin,padding,或者定位.就是单纯的空出来非常难调试.其实坑就是这里 在 iPhone「添加到主屏幕」时显示自定 ...

  5. Cocos2d-x 3.1.1 Lua演示样例 ActionsProgressTest(进度条)

    Cocos2d-x 3.1.1 Lua演示样例 ActionsProgressTest(进度条) 本篇博客介绍Cocos2d-x中的进度条动画,进度条涉及以下几个重要的类和方法,笔者来给大家具体解说一 ...

  6. 设计模式_Observable与Observer

    一.基本概念   java.util.Observable 被观察者类,需要继承这个类   java.util.Observer 观察者类,需要实现这个接口中的update()方法 二.举例 Door ...

  7. Yii2中对数据库的查询方法如下

    User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->w ...

  8. 解决eclipse无法打开:Failed to load the JNI shared library

    64位系统安装了64位的eclipse,但是jdk是32位的 总之就是eclipse跟jdk搭配不上,所以解决的时候注意这一点

  9. js动态显示时间

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  10. Linux上安装Nginx及常用命令

    一.Linux安装软件常用方法 1.rpm(或pkg)安装,类似于Windows安装程序,是预编译好的程序. 1)使用的是通用参数编译,配置参数不是最佳 2)可控制性不强,比如对程序特定组件的定制性安 ...