Why is my array of strings encoded as a single string with "jsonencode"?

8 ビュー (過去 30 日間)
I created a struct with data:
>> data.key_a = "value_a";
>> data.key_b = ["value_b"];
Then, I encoded the struct in JSON format:
>> json = jsonencode(data);
The resulting JSON looks like this:
{"key_a":"value_a","key_b":"value_b"}
I would expect the attribute "key_b" to have a value ["value_b"] as I specified the field "key_b" to have an array of strings as its value in the "data" struct above. Why is this not the case?

採用された回答

MathWorks Support Team
MathWorks Support Team 2023 年 2 月 6 日
This occurs because MATLAB doesn't make a distinction between a single (scalar) value and a 1x1 array. So, both values are encoded as JSON strings rather than JSON arrays containing a single string.
As a workaround, "key_b" could be stored as a cell array instead:
>> data.key_a = "value_a";
>> data.key_b = {"value_b"};
>> json = jsonencode(data);
This results in the desired JSON:
{"key_a":"value_a","key_b":["value_b"]}

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeJSON Format についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by