图片缩略图

JSONLab(开发分支)

版本1.9.8 (153 KB) 千千方
在MATLAB/Octave中编码/解码JSON和UBJSON文件的工具箱
5.0
3评级

20下载

更新2021年6月20日

从GitHub

视图版本历史

在GitHub上查看许可证

这是JSONLab工具箱的开发分支(不稳定)。下载链接直接指向JSONLab Github存储库的“master”分支中的最新提交https://github.com/fangq/jsonlab/

请谨慎使用此分支:它可能包含最新的bug修复,但同时,它也可能包含部分实现的特性,并且可能不稳定。如果你需要一个稳定的版本,请从下面的链接下载

//www.tatmou.com/matlabcentral/fileexchange/33381-jsonlab-a-toolbox-to-encode-decode-json-files

=================================================================
JSONLab以前的稳定版本:

** JSONLab 2.0 beta (Magnus - beta)于2019年10月24日发布

发布网址:https://github.com/fangq/jsonlab/releases/tag/v1.9.8
JData规范草案2的参考实现http://github.com/fangq/jdata
取决于://www.tatmou.com/matlabcentral/fileexchange/71434-zmat

JSONLab是一个免费和开源的JSON/UBJSON/MessagePack编码器实现
以及MATLAB语言的解码器。它可以用来转换MATLAB
数据结构(数组、结构体、单元格、结构体数组、单元格数组和对象)
JSON/UBJSON/MessagePack格式的字符串,或解码
JSON/UBJSON/MessagePack文件转换成MATLAB数据结构。JSONLab既金宝app支持
MATLAB和[http://www.gnu.org/software/octaveGNU Octave](一个免费的MATLAB克隆)。

JSON ([http://www.json.org/JavaScript对象表示法])是一个高度可移植的,
人类可读的,http://en.wikipedia.org/wiki/JSON“无脂”)文本格式
来表示复杂的分层数据。它和[http://en.wikipedia.org/wiki/XMLXML)
而且可以减少复杂性。JSON格式被广泛用于应用程序中的数据交换。

UBJSON ([http://ubjson.org/Universal Binary JSON])是一种二进制JSON格式
特别优化的压缩文件大小和更好的性能,而保持
语义与基于文本的JSON格式一样简单。使用UBJSON
格式允许以灵活和可扩展的方式包装复杂的二进制数据
结构,使处理复杂和大数据集成为可能
没有由于文本转换而导致的准确性损失。MessagePack是另一个二进制文件
类似json的数据格式广泛用于web/本地应用程序的数据交换。
它比UBJSON略紧凑,但不能直接阅读
UBJSON。

我们认为JSON和它的二进制副本都将发挥重要作用
作为科学研究的主流数据交换格式。
它具有其他流行软件所提供的灵活性和通用性
通用文件规范,例如[http://www.hdfgroup.org/HDF5/whatishdf5.htmlHDF5]
但显著降低了复杂性和极佳的可读性。

为了实现这个目标,我们开发了JData规范(http://github.com/fangq/jdata
对复杂的科学数据结构进行标准化序列化,例如
N-D数组,稀疏/复数数组,树,地图,表格和图形使用
JSON /二进制JSON结构。文本格式和二进制格式的JData文件是
与JSON/UBJSON格式在语法上兼容,并且易于解析
使用现有的JSON和UBJSON解析器。

请注意,由' ' saveubjson ' '生成的数据文件可能使用特殊的
“优化头”存储N- d (N>1)数组,在JData规范草案2中定义。
UBJSON规范草案12不支持此特性。金宝app生产
必须使用符合UBJSON- draft -12的解析器解析的UBJSON文件
在调用' ' saveubjson ' '中添加选项' ' " NestArray',1 ' '。

请在这里找到详细的在线帮助http://iso2mesh.sourceforge.net/cgi-bin/index.cgi?jsonlab/Doc

外部链接:
[1]//www.tatmou.com/matlabcentral/fileexchange/39526-byte-encoding-utilities
[2]http://github.com/fangq/zmat

引用作为

千千方(2021)。JSONLab(开发分支)GitHub (https://github.com/fangq/jsonlab)。检索

意见及评分(7

千千方

@Otis,谢谢你报道这个问题。我能够重现这个问题并修复它。

请查看我的github提交:
https://github.com/fangq/jsonlab/commit/1b1be6595377b49089300df2c50dd6d746b7ba82

jsonlab默认移除单个元素的方括号(由opt.SingletArray控制)。但是,在UBJSON的情况下,二进制数据流还可能包含“]”或“[”,这些数据流可能会被意外替换。为了避免这种副作用,我使用了"]$",它只匹配并删除了结束方括号。一个解决方案是在savejson的末尾添加'SingletArray', 1。这将使字段被一对[]包围。通过这个修复,我能够在没有错误的情况下运行您报告的案例。

请更新您的jsonlab并尝试一下。

千千方

@Raoann,你需要运行addpath('/path/to/jsonlab'),以便matlab找到这个工具箱。这是安装任何matlab工具箱所必需的。

奥蒂斯

我在loadubjson中遇到了一个奇怪的bug。

下面的代码在调用loadubjson时崩溃。
一个= 3.779487702;
('C', C, 'C.ubjson');
dat = loadubjson(“C.ubjson”);

但如果你重做c a = 3.779487802,也就是说c a相差一位数,就可以了。有一些结构字段的值,在saveubjson保存后,就不能被loadubjson读取。我还没能找到一个模式来说明发生了什么。

Raoann

你好,
我有一个JSON文件,我想在Matlab中读取。该文件包含太阳能光伏的生产和微电网的消费的值。我首先输入以下几行代码来读取JSON文件:

fname = 'Chalokwa Test Bench2.json';
fid = fopen(帧);
生=从文件中读(fid,正);
str = char(原始的);
文件关闭(fid);
val = jsondecode (str);

但是,当我输入这行:
data = loadjson('Chalokwa Test Bench2.json');

命令窗口回答(loadjson)是未定义的,我应该做什么?
我是一个初学者在Matlab,我希望得到一些帮助,从你的家伙。

致以最亲切的问候

Le呗

当我加载小的json文件时,它工作得很好,但当我加载大的json文件" instances_train2017. json "。json", Matlab works whole night and not completed, this file is about 460 megabytes in size, that small one is 9 Mb in size and completed takes about 1 min. Does anyone konw how to deal with this problem? Thanks.

Tago

优秀的工作

理查德behren

嗨,倩倩,谢谢你的工具箱!但这里有一个bug:在一个Matlab字符串数组中,它是一个结构数组中的字段,savejson作为转义字符添加的“\”字符在你loadjson时没有被正确剥离。

MATLAB版本兼容性
创建R2010a
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!