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
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 个)

产品


版本

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by