【问题标题】:How to parse json file in Octave?如何在 Octave 中解析 json 文件?
【发布时间】:2018-03-08 14:45:35
【问题描述】:

如标题所示,Octave 中是否有内置的解析/解码.json 文件的方法?

我浏览了 Octave 文档和不同的工具,但我唯一找到的是这个工具: https://github.com/fangq/jsonlab

编辑: 目的是能够为两种不同的环境使用相同的 json 配置文件:python 和 octave。所以会是: 1.定义配置; 2.运行octave脚本,从config.json读取配置; 3.运行python脚本,从config.json读取配置;

我目前正在使用 jsonlab 八度音程工具集,因为 json 相当简单,所以它工作得非常好。问题来自于对为什么 octave 默认不实现 json 序列化库的纯粹好奇。

所以,由于 json 很简单,我的解决方案是使用https://github.com/fangq/jsonlab。从下面的 cmets 来看,这似乎不适合与更复杂的 json 一起使用。

【问题讨论】:

  • JSONlab 是否不足以满足您的需求?为什么需要内置?
  • io 包包含一个 object2json 函数,用于将八度音程对象编码为 json。 reverse 函数不存在,但从某种意义上说,拥有一个函数并没有直接意义,因为要成功将 json 文件解码为八度变量,它必须是非常具体的 json 格式无论如何都与 octave 二进制对象兼容,因此您最好首先保存为 octave 二进制格式。
  • 也许值得告诉我们你试图用 json 解决的潜在“问题”是什么。通常,此类问题最终会成为XYProblem 的案例,并且可能会有更简单的解决方案满足您的需求

标签: json octave


【解决方案1】:

我已经在很多项目中使用 JSONlab 很长时间了,但是因为它非常慢并且有些点没有达到我的期望,所以我为 rapidjson 编写了一个 octave 包装器:https://github.com/Andy1978/octave-rapidjson

README.md 显示了一些示例。一个从服务器获取 JSON 回复的示例,然后将其转换为结构:

octave:1> x = load_json (urlread ("http://headers.jsontest.com/"))
x =

  scalar structure containing the fields:

    X-Cloud-Trace-Context = 61910c1954c45fe021d35aeeb5477c20/2702800337619378204
    Host = headers.jsontest.com
    Accept = */*

octave:2> x.Host
ans = headers.jsontest.com

另一种方式:

octave:11> a.x = 5; a.y = {1,2,"foobar"}; a.z = rand(2); save_json (a)
ans = {
    "x": 5.0,
    "y": [
        1.0,
        2.0,
        "foobar"
    ],
    "z": [
        [
            0.6835708677160701,
            0.891779233104656
        ],
        [
            0.9378550691771155,
            0.664043049215685
        ]
    ]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 2023-02-14
    • 2018-04-07
    相关资源
    最近更新 更多