Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSJSONSerialization与基于流的解析器_Ios_Json_Ios5_Memory Management_Nsjsonserialization - Fatal编程技术网

Ios NSJSONSerialization与基于流的解析器

Ios NSJSONSerialization与基于流的解析器,ios,json,ios5,memory-management,nsjsonserialization,Ios,Json,Ios5,Memory Management,Nsjsonserialization,我的iPad应用程序需要解析一个10 MB的JSON文件,并将其内容保存在核心数据中 考虑到较大的文件大小和内存使用,您建议使用NSJSONSerialization,还是选择基于流的JSON解析器?在这种情况下,您建议使用哪种基于流的解析器?顺便说一下:该文件是由另一个iOS应用程序使用NSJSONSerialization创建的 谢谢大家! 我建议两者都使用,因为NSJSONSerialization具有方法JSONObjectWithStream:options:error: 您可以改为使

我的iPad应用程序需要解析一个10 MB的JSON文件,并将其内容保存在核心数据中

考虑到较大的文件大小和内存使用,您建议使用NSJSONSerialization,还是选择基于流的JSON解析器?在这种情况下,您建议使用哪种基于流的解析器?顺便说一下:该文件是由另一个iOS应用程序使用NSJSONSerialization创建的


谢谢大家!

我建议两者都使用,因为NSJSONSerialization具有方法JSONObjectWithStream:options:error:


您可以改为使用。

我建议两者都使用,因为NSJSONSerialization具有JSONObjectWithStream:options:error:方法


您可以改为使用。

但是从解析器构建的字典结构会在解析过程完成后立即分配10 MB的RAM吗?这不会导致iOS内存警告吗?这取决于它是什么以及它的格式。10MB的JSON文本不一定等于内存中10MB的数据。如果它在内存中会很大,那么你就不想加载,所以你不想在任何时候解析整个东西。一般来说,JSON文件的解析表示会比源文件大一点,可能是3-5倍。JSON中几乎没有糖,JSON中的所有字符串都需要在解析器输出中表示。字符串将扩展为2字节或4字节的表示形式,加上它们有对象开销,以及管理语言数组和字典的开销。但是从解析器构建的字典结构将在解析过程完成后立即分配10 MB的RAM?这不会导致iOS内存警告吗?这取决于它是什么以及它的格式。10MB的JSON文本不一定等于内存中10MB的数据。如果它在内存中会很大,那么你就不想加载,所以你不想在任何时候解析整个东西。一般来说,JSON文件的解析表示会比源文件大一点,可能是3-5倍。JSON中几乎没有糖,JSON中的所有字符串都需要在解析器输出中表示。字符串将扩展为2字节或4字节的表示形式,加上它们有对象开销,以及管理语言数组和字典的开销。如果说基于流,你指的是类似于某些XML解析器的解析器,在这种解析器中,你需要特定的数据位,然后动态提取,与解析整个文件并在一个块中返回结果数据相比,这种类型的JSON解析器很少。这在很大程度上是因为解析后的JSON的内部表示比典型的XML内部表示要紧凑得多,所以一次解析它更实际。此外,您不能像使用XML一样保证JSON对象中项目的顺序。如果说基于流的解析器,您指的是类似于某些XML解析器的解析器,在这些解析器中,您请求特定的数据位并动态提取,而不是解析整个文件并返回一个块中的结果数据,那么这种类型的JSON解析器就很少了。这在很大程度上是因为解析后的JSON的内部表示比典型的XML内部表示要紧凑得多,所以一次解析它更实际。此外,您不能像使用XML那样保证JSON对象中项目的顺序。