Read JSON objects with Matlab

后端 未结 4 1851
死守一世寂寞
死守一世寂寞 2021-01-05 00:29

I want to read from a json file with Matlab and store everything in \"data\" as objects. After import, I need to iterate through all and extract specific values, if it\'s av

相关标签:
4条回答
  • 2021-01-05 00:59

    You could try parsing using another json library, such as this one on file exchange.

    Alternatively you could try some of the methods listed on this site, such as using matlab's Java and .NET integration and loading with one of their json libraries.

    As a third alternative, since the method you have shown above will happily load the first object in the string, you could always do some manual pre-parsing of the string into a cell array of strings containing a single object each, and then parse those.

    0 讨论(0)
  • 2021-01-05 01:05

    You are trying to read a json file, which is not valid. I recommend to use jsonlint for a quick verification.

    Your json looks like

    {
        "skipped":"A"    
    }
    {
        "skipped":"B"
    }
    

    That is not a valid syntax, because it describes two objects. After the first } the parser expects the end of file because a json file contains one object.

    Possible fixes are:

    [
        {
            "skipped": "A"
        },
        {
            "skipped": "B"
        }
    ]
    

    or

    {
        "aa": {
            "skipped": "A"
        },
        "bb": {
            "skipped": "B"
        }
    }
    
    0 讨论(0)
  • 2021-01-05 01:07

    If you just want to read whole JSON files into MATLAB, and have a C++11 compiler, you can use the very fast json_read mex function.

    0 讨论(0)
  • 2021-01-05 01:12

    If your file is accessible via http or https, you can use the webread function from the Data Import and Export toolbox. It automatically converts JSON files to Matlab structures.

    There is a decodeJSON function in the toolbox (MATLABROOT/toolbox/matlab/external/interfaces/webservices/restful/private/decodeJSON.m), but the help clearly states that:

    % FOR INTERNAL USE ONLY -- This function is intentionally undocumented
    %   and is intended for use only within the scope of functions and classes
    %   in toolbox/matlab/external/interfaces/webservices/restful. Its behavior
    %   may change, or the class itself may be removed in a future release.
    

    Nevertheless you can get inspiration in the content to build your own solution. It's a pity that the Mathworks didn't made this program available outside the toolbox.

    Best

    0 讨论(0)
提交回复
热议问题