Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
Json “a”应该怎么做;项目“;要写什么文件?_Json_Xml_Database_Protocol Buffers_Binaryfiles - Fatal编程技术网

Json “a”应该怎么做;项目“;要写什么文件?

Json “a”应该怎么做;项目“;要写什么文件?,json,xml,database,protocol-buffers,binaryfiles,Json,Xml,Database,Protocol Buffers,Binaryfiles,使用流行的软件包,如Microsoft Word或Photoshop,我们通常可以选择将进度保存为“项目”文件,以后可以打开该文件编辑我们的作品。此文件通常包含用户的所有选项和进度(即您在Word中键入的文章) 所以我的问题是,如果我正在做一个类似的应用程序,需要创建一个类似的“项目”文件,我应该怎么做呢?我的应用程序是一个科学应用程序,这意味着它需要很多(多维)数组。我知道这样做会有很多选择,但我想知道事实上的方法 以下是我列出的一些选项: XML:人类可读的。大小太大,处理阵列的工作量太大

使用流行的软件包,如Microsoft Word或Photoshop,我们通常可以选择将进度保存为“项目”文件,以后可以打开该文件编辑我们的作品。此文件通常包含用户的所有选项和进度(即您在Word中键入的文章)

所以我的问题是,如果我正在做一个类似的应用程序,需要创建一个类似的“项目”文件,我应该怎么做呢?我的应用程序是一个科学应用程序,这意味着它需要很多(多维)数组。我知道这样做会有很多选择,但我想知道事实上的方法

以下是我列出的一些选项:

  • XML:人类可读的。大小太大,处理阵列的工作量太大
  • JSON:更流行/现代。对数组很好
  • 协议缓冲区:由谷歌创建。可能更快
  • 数据库:可能不是一个好的用例,因为“项目”文件很可能是“临时的”。此外,使用阵列也不是很直接
  • 创建自己的二进制格式:对于像我这样没有经验的程序员来说,这可能是最困难的解决方案

  • 我想听听你们的建议。谢谢:)。

    (好问题:)只是一些想法)我更喜欢主项目文件的文本格式。您可以轻松地制作差异、打开、阅读和修改它。大型ascii或二进制数据可以作为序列化数据存储在外部文件或类似SQLite的数据库中,通过应用程序可以轻松访问和处理这些数据。主项目具有到外部数据存储的链接。我对主项目文件的建议是一种简单的XML格式,可以轻松地转换为JSON格式。一个包含
    对(
    dict
    )的列表有利于开始<代码>值可以是基本数据类型,也可以是
    数组
    dict
    。复杂的XML树是不好的。
    名称也有助于描述和构造数据。所以我更喜欢
    key=“rect.4711.pos.x”value=“500”
    而不是
    500……
    。重要的一点是,项目数据是可移植和自包含的,用户可以将项目视为单个单元,即使它是文件系统上的一个目录,为此,支持某种压缩格式的项目数据是很好的。

    Word和Photoshop没有“项目”文件(即描述如何加载或使用其他文件的元文件)。Word和Photoshop都使用单个文件模型(
    .docx
    .psd
    ,分别包含用户的工作以及文档设置)。“使用数组”不是一个足够详细的问题描述。在GP-GPU着色器中处理千兆字节大小的临时纹理缓冲区与简单的1行CSV和从磁盘流式传输TB大小的数据集之间存在巨大差异,同时保持内存使用率较低。我投票结束这个问题,因为我们需要更多、更多、更多的细节。如果你只是如果您想将数字标量值的大型多维数组保存到磁盘,那么如果您使用平台的内置序列化功能(假设您使用的是Python、Java或.NET等),您可能会很好抱歉@Dai,你对我的术语完全正确。我想为了让我的问题更清楚,我不仅仅有多维数组,还有类(存储我的数组和其他字段)。我在使用Python。StackOverflow不鼓励关于应用程序设计的问题(与纯编码问题不同)。原因是该网站面向需要事实答案的简单问题,而不是广泛的讨论。在实践中,此类设计问题取决于您的项目要求和约束条件:速度、空间、编程语言、依赖性、技能。如果我就这一选择向您提供建议,我会问y在尝试回答这些问题之前,你需要回答很多问题。