diff --git a/src/bridge/core.cc b/src/bridge/core.cc index c050a7c..a349dff 100644 --- a/src/bridge/core.cc +++ b/src/bridge/core.cc @@ -248,7 +248,7 @@ static void dict2array(PyObject *pv, zval *zv) { py2php_fn(value, &item); ssize_t len; - const char *key = phpy::python::string2utf8(next, &len); + const char *key = phpy::python::string2utf8(PyObject_Str(next), &len); add_assoc_zval_ex(zv, key, len, &item); } Py_DECREF(iter); diff --git a/tests/phpunit/DictTest.php b/tests/phpunit/DictTest.php index 3a53b90..39963b4 100644 --- a/tests/phpunit/DictTest.php +++ b/tests/phpunit/DictTest.php @@ -61,4 +61,16 @@ public function testIterInt() } $this->assertEquals($keys, array_keys($map)); } + + public function testKeyNotString() + { + $pycode = <<dict_data)); + $result = "{\"('sum', '\u6570\u91cf')\":1,\"('mean', '\u6570\u91cf')\":2}"; + $this->assertEquals($json, $result); + } }