我在asterisk pbx中使用lua。处理json字符串时遇到以下问题。
json" null"值转换为lua中的函数类型。为什么吗
如何处理这种情况?因为我期待零,因为没有值在json中表示null而nil在lua中没有任何意义。
function
table: 0xf5e770
{
Sms = {
content = "Your request has been accepted in Previous Miss call. We get back to you very soon.",
key = "xxxxxxxxxxxxxxxxxxxxx",
senderid = <function 1>,
to = "{caller}",
type = "Simple"
}
}
{"Sms":{"type":"Simple","key":"xxxxxxxxxxxxxxxxxxxxx","senderid":null,"content":"Your request has been accepted in Previous Miss call. We get back to you very soon.","to":"{caller}"}}
上面的输出是
<?php
$folder = 'images';
$images = scandir($folder);
$images = array_diff($images, array('..', '.')); // remove '..' and '.' from array
foreach ($images as $i => $image) {
$id = 'pic' . $i;
$divHTML .= "<div class=\"main-inner\"><img src=\"$folder/$image\"></div>";
$labelHTML .= "<div class=\"info-inner\"><label for=\"$id\"><img src=\"$folder/$image\"></label></div>";
}
?>
<html>
<?php echo $divHTML ?>
<?php echo $labelHTML ?>
</html>
答案 0 :(得分:1)
由特定库决定如何表示null
值。
使用nil
有自己的问题,因为它也找不到
原始JSON具有空值的键或根本没有这样的键。
所以一些库只返回一些独特的价值。一些提供
一种传递此值的方法,如json.deconde(str, NULL_VALUE)
。
所以答案就是阅读您使用的库的文档/来源。
最有可能提供json.null
值来检查
两个值都为null。但功能真是奇怪的选择因为
他们有一些不确定的独特规则。
或者尝试另一个图书馆。
答案 1 :(得分:0)
首先,@ moteus是正确的:
由具体的库决定如何表示空值
如果您使用的是documentation,则解决方案是使用占位符而不是null
,并使用指定的编码选项将表结构序列化为json字符串:
-- define a placeholder
NullPlaceholder = "\0"
-- use it in an internal table
tableStructure = {}
tableStructure['someNullValue'] = NullPlaceholder
-- pass the placeholder to the encode methode
encode_options = { null = NullPlaceholder }
jsonString = JSON:encode(tableStructure, nil, encode_options)
导致
{"someNullValue": null}