2

多層の json オブジェクトをテーブルにデコードし、「temp」の値を出力したいと考えています。

p=666
d=23.42
payload='{"d":
             {"pres":'..(p)..',"temp":'..(d)..'}
         }'

t = cjson.decode(payload)

私の最初のアイデアは次のようなものでした:

print(t["d"]["temp"])

しかし、これはうまくいきませんでした。Lua-CJson を使用して正しくデコードできるように、このコードを改善するにはどうすればよいですか?

4

2 に答える 2

3

引用符で囲まれた文字列に改行を含めることはできません。

次の 2 つの解決策があります。

  • から改行を削除し'...'ます。

    payload='{"d": {"pres":'..(p)..',"temp":'..(d)..'} }'

  • [[ ... ]改行を許可する長い文字列形式:を使用します。

    payload=[[{"d": {"pres":]]..(p)..',"temp":'..(d)..[[} }]]

テンプレートを使用することもできます。これにより、物事がより明確になります。

p=666
d=23.42
payload=[[
    { "d":
            {"pres": (p), "temp": (d)}
    }'
]]  
payload=payload:gsub("%((.-)%)",_G)
print(payload)

フィールドがグローバル変数でない場合は、それらをテーブルに入れ、代わりにそのテーブルを使用します_G

于 2016-02-01T18:28:14.033 に答える