我使用JSON为聊天系统编写了以下代码:
header('Content-type: application/json');
$theName = $_GET['name'];
$theMessage = $_GET['message'];
$str = file_get_contents("transactions.json");
if ($str == ""){
$str = '[]';
}
$arr = json_decode($str, true);
$arrne['name'] = "$theName";
$arrne['message'] = "$theMessage";
array_push($arr, $arrne);
$aFinalTransaction = json_encode($arr, JSON_PRETTY_PRINT);
echo $aFinalTransaction;
file_put_contents("transactions.json", "$aFinalTransaction");这将获取事务文件的内容,对其进行解码,插入从$_GET获取的名称和消息,将其推入数组,并将其编码回字符串,然后将其放入事务文件中。
这可以很好地工作,但是我需要为XML而不是JSON做完全相同的事情。因此,文件中的字符串将如下所示:
<chatMessage>
<name>Name1</name>
<message>Msg1</message>
</chatMessage>
<chatMessage>
<name>Name2</name>
<message>Msg2</message>
</chatMessage>这是它现在在JSON中的样子:
[
{
"name": "Name1",
"message": "Msg1"
},
{
"name": "Name2",
"message": "Msg2"
}
]另外,还有一件事,我到底该如何命名该JSON对象?所以它看起来就像这样:
{"messages":[
{
"name": "Name1",
"message": "Msg1"
},
{
"name": "Name2",
"message": "Msg2"
}
]}最后这一部分可能比我想象的要简单,但我没有任何运气。
我真的希望你能帮助我。谢谢。
发布于 2015-04-30 05:40:31
如果你想把你的“消息”放在这个名字的元素下,你只需要确保你的数组遵循这个格式。您也没有定义数组,您需要首先将其设置为一个$arrne (),您可以将其简化如下所示。
$str = file_get_contents( "transactions.json" );
// check if $str is a blank string, false, null, etc
if ( empty( $str ) ){
// it's empty so create an array
$arr = array();
} else {
// it's not empty so decode the JSON string
$arr = json_decode( $str, true );
}
// use isset() to avoid undefined index warnings
array_push( $arr, array(
'name' => isset( $_GET['name'] )? $_GET['name'] : "",
'message' => isset( $_GET['message'] )? $_GET['message'] : "",
) );
// assign to a new array with all the messages under the key "messages"
$result = array( 'messages' => $arr );
// convert array to JSON. see comment above for converting to XML with SimpleXML
$json = json_encode( $result, JSON_PRETTY_PRINT );https://stackoverflow.com/questions/29955009
复制相似问题