Why is my array of strings encoded as a single string with "jsonencode"?
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
MathWorks Support Team
el 2 de Sept. de 2022
Respondida: MathWorks Support Team
el 14 de Sept. de 2022
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?
Respuesta aceptada
MathWorks Support Team
el 6 de Feb. de 2023
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 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre JSON Format en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!