您是否知道用於Matlab的非常快速的JSON解析器?用於Matlab的快速JSON解析器
目前我使用的是JSONlab,但更大的JSON文件(我的是12 MB,500 000行)非常慢。或者你有什麼提示可以提高速度?
P.S. JSON文件是最大的。 3層深。
您是否知道用於Matlab的非常快速的JSON解析器?用於Matlab的快速JSON解析器
目前我使用的是JSONlab,但更大的JSON文件(我的是12 MB,500 000行)非常慢。或者你有什麼提示可以提高速度?
P.S. JSON文件是最大的。 3層深。
如果您想快點,可以使用Java JSON parser。 而這個答案失控之前,我要發佈的東西,我放下至今:
clc
% input example
jsonStr = '{"bool1": true, "string1": "some text", "double1": 5, "array1": [1,2,3], "nested": {"val1": 1, "val2": "one"}}'
% use java..
javaaddpath('json.jar');
jsonObj = org.json.JSONObject(jsonStr);
% check out the available methods
jsonObj.methods % see also http://www.json.org/javadoc/org/json/JSONObject.html
% get some stuff
b = jsonObj.getBoolean('bool1')
s = jsonObj.getString('string1')
d = jsonObj.getDouble('double1')
i = jsonObj.getJSONObject('nested').getInt('val1')
% put some stuff
jsonObj = jsonObj.put('sum', 1+1);
% getting an array or matrix is not so easy (you get a JSONArray)
e = jsonObj.get('array1');
% what are the methods to access that JSONArray?
e.methods
for idx = 1:e.length()
e.get(idx-1)
end
% but putting arrays or matrices works fine
jsonObj = jsonObj.put('matrix1', ones(5));
% you can get these also easily ..
m1 = jsonObj.get('matrix1')
% .. as long as you dont convert the obj back to a string
jsonObj = org.json.JSONObject(jsonObj.toString());
m2 = jsonObj.get('matrix1')
如果你能負擔得起調用.NET代碼,你可能想看看在這個輕量級男人(我是作者):
https://github.com/ysharplanguage/FastJsonParser#PerfDetailed
巧合的是,我的基準包括在12MB球場測試(「父親數據」)正是(和深度也是一對夫婦的水平),這解析器解析在便宜的筆記本電腦上,在250毫秒以內進入POCO。
對於MATLAB + .NET代碼的集成:
http://www.mathworks.com/help/matlab/using-net-libraries-in-matlab.html
「HTH,
如果你只是想讀取JSON文件,並有一個C++編譯器11,就可以使用非常快的json_read mex功能。
忘了提及您必須將'json.jar'添加到javaclasspath中。可以下載實例[這裏](http://mvnrepository.com/artifact/org.json/json/20140107)。更新了答案。 – MeMyselfAndI 2014-10-17 12:09:54