json_encode($ response,JSON_FORCE_OBJECT)和json_encode($ response)之间有什么区别?

时间:2018-01-19 04:57:26

标签: php json decode

php中以下两个json编码方法的输出有何不同?任何人都可以帮我解决两种解码方案。?

with open("logs.txt", "a+") as fd:
    for entry in driver.get_log('browser'):
        print "Login logs:", entry
        log = entry
        if log['source'] == 'network':
            fileData["logError"] = log['message']
    fd.write(json.dumps(fileData))
    fd.write("\n")

2 个答案:

答案 0 :(得分:2)

请检查Bellow示例。你会知道这两种方法。

<?php
$b = array();

echo "Empty array output as array: ", json_encode($b), "\n";
echo "Empty array output as object: ", json_encode($b, JSON_FORCE_OBJECT), "\n\n";

$c = array(array(1,2,3));

echo "Non-associative array output as array: ", json_encode($c), "\n";
echo "Non-associative array output as object: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n";

$d = array('foo' => 'bar', 'baz' => 'long');

echo "Associative array always output as object: ", json_encode($d), "\n";
echo "Associative array always output as object: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n";
?>

输出

Empty array output as array: []
Empty array output as object: {}

Non-associative array output as array: [[1,2,3]]
Non-associative array output as object: {"0":{"0":1,"1":2,"2":3}}

Associative array always output as object: {"foo":"bar","baz":"long"}
Associative array always output as object: {"foo":"bar","baz":"long"}

答案 1 :(得分:1)

关键是如果此选项JSON_FORCE_OBJECT被“启用”,则反序列化的数组将被放置在对象中:

$c = array(array(1,2,3));

echo "Non-associative array output as array: ", json_encode($c), "\n";
echo "Non-associative array output as object: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n";
  

非关联数组输出为数组:[[1,2,3]]
非关联数组输出为对象:{“0”:{“0”:1,“1”:2, “2”:3}}