PHP在数组中添加JSON字符串并编码

PHP在数组中添加JSON字符串并编码,php,json,encoding,Php,Json,Encoding,团队 我试图生成一个JSON字符串,但我一直遇到(我猜)引号的问题 代码: <?php // JSON data generated $attachment = "[{ 'contentType': 'application/json', 'content': { 'type': 'mytype', 'body': [{ 'type': 'TextInfo', 'text': 'TEST TEXT',

团队

我试图生成一个JSON字符串,但我一直遇到(我猜)引号的问题

代码:

<?php 
// JSON data generated
$attachment = "[{
   'contentType': 'application/json',
   'content': {
      'type': 'mytype',
      'body': [{
         'type': 'TextInfo',
         'text': 'TEST TEXT',
         'wrap': true
      }]
   }
}]";
// Add attachment string (JSON data) in an array
$mydata = array(
  'space' => "abc",
  'markdown' => "**welcome**",
  'attachment' => $attachment
);
// Turn array into one big JSON string
$send_json = json_encode($data2);
{
   "space": "abc",
   "markdown": "**welcome**",
   "attachment": [{
      'contentType': 'application/json',
      'content': {
         'type': 'mytype',
         'body': [{
            'type': 'TextInfo',
            'text': 'TEST TEXT',
            'wrap': true
         }]
      }
   }]
}

感觉我缺少了一些东西(除了所需的知识;-)。

我不明白您的
$attachment
数据是如何“生成JSON数据”的,因为它是无效的JSON…我希望您不是在手工制作JSON字符串。您应该始终只生成一个数组/对象,然后在完成用数据填充iterable变量后调用
json\u encode()

  • 我已修复了无效的
    $attachment
    字符串,方法是将
    替换为
    ,反之亦然

  • 要在
    $mydata['attachment']
    中嵌套此数据,您需要首先解码json

  • 最后,一旦您的数组数据完全构建完毕,您就可以在
    $mydata
    上调用
    json\u encode()
    。PRETTY\u PRINT标志只是为了帮助本文的可读性

代码:()

输出:

{
    "space": "abc",
    "markdown": "**welcome**",
    "attachment": [
        {
            "contentType": "application\/json",
            "content": {
                "type": "mytype",
                "body": [
                    {
                        "type": "TextInfo",
                        "text": "TEST TEXT",
                        "wrap": true
                    }
                ]
            }
        }
    ]
}

是的,不要尝试手动构建JSON字符串。创建一个具有正确内容和形状的类或数组,然后在其上使用
JSON\u encode()
生成JSON字符串。不确定为什么要将子对象放在数组中,因为每个casety中只有一个对象这应该给你一个在js中使用的对象,而不是数组。
{
    "space": "abc",
    "markdown": "**welcome**",
    "attachment": [
        {
            "contentType": "application\/json",
            "content": {
                "type": "mytype",
                "body": [
                    {
                        "type": "TextInfo",
                        "text": "TEST TEXT",
                        "wrap": true
                    }
                ]
            }
        }
    ]
}