Nesting Json напрямую не работает с cJson (по крайней мере, не на ESP8266 с NodeMCU) Я нашел решение, обернув массив вокруг вложенных значений.
p = 666
d = "23.42"
payload='{"d":[{"pres":'..(p)..',"temp":"'..(d)..'"}]}'
t = cjson.decode(payload)
print(t.d[1].temp) -- prints "23.42"
# Примечание 1 - это означает, что вы должны обратиться массив перед вызовом переменной тд [1] - Массивы в Lua начинаются с числа и NOT нулевой, как и многие другие языки сценариев.
# Примечание 2 - по какой-то причине я получил ошибку «неправильное число» с значением с плавающей запятой (переменная d). В качестве строки значение декодируется без ошибок. Мне пришлось сделать переменную строкой и поставить «двойные кавычки» вокруг значения. -> ah Я узнал, что работал над целой версией nodeMCU, которая, по-видимому, не поддерживает числа с плавающей запятой ...
Спасибо за подсказку с разрывом линии. Но моя главная проблема заключалась в том, что у меня есть многослойный json-объект, который анализируется в таблице lua с cjson.decode. Эта таблица lua работает как массив, но я могу получить только пары ключ: значение из первого уровня с чем-то вроде этого: print (t ["d"]) , но я хочу получить доступ к значению "temp" во втором слое но не нашел способа сделать это. – trahloff