如何使用lua处理json字符串中的空值?

时间:2017-02-13 05:45:06

标签: json lua

我在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>

2 个答案:

答案 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}