【问题标题】:Problems by embedding php vars into json将 php vars 嵌入到 json 中的问题
【发布时间】:2021-11-20 12:52:40
【问题描述】:

我有这个 json 代码:

    $dataB = <<<DATA
{


    "actualArrivalDateTime":"2021-09-07T10:00", 
    "containerNumber:" "000",
    "shipmentNumber": aaaa1, 
    "containerSequence":3,  
    "placeOfArrival": {
        "pointSequence": 2
                        }
                        
    
} 
DATA;

我想将 php var 传递给 containerNumber 但不起作用。 例如,如果我分配:

<? $contnr = "001"; ?>

然后我尝试这样做:

    $dataB = <<<DATA
{


    "actualArrivalDateTime":"2021-09-07T10:00", 
    "containerNumber:" ".$var.",
    "shipmentNumber": aaaa1, 
    "containerSequence":3,  
    "placeOfArrival": {
        "pointSequence": 2
                        }
                        
    
} 
DATA;

但是不起作用...它说 containerNumber 无效...但是如果我将 containerNumber 写为变量,而不是变量,它可以工作。 有什么帮助吗?

【问题讨论】:

  • 通常,您会使用json_decode 将您的JSON 字符串转换为PHP 数组(或对象),对其进行修改,然后使用json_encode 将其转换回JSON 字符串。
  • 你能帮我举个例子吗?
  • ".$var." 应该是 "$var": wandbox.org/permlink/h4dLNtbMyhbdrW17 请在提问之前进行一些调试。一个简单的echo $dataB 会告诉你问题。
  • 我试着按照你说的做,当你用 echo $dataB 编写 json 时工作。但是当我将此 json 传递给接收这些值的服务器时,它不起作用..

标签: javascript php json


【解决方案1】:

通常,您会使用 json_decode 将 JSON 字符串转换为 PHP 数组(或对象),对其进行修改,然后使用 json_encode 将其转换回 JSON 字符串。

您在问题中的 JSON 字符串无效。使用像 https://jsonlint.com/ 这样的工具来验证它。

"containerNumber:" 和未加引号的字符串 aaaa1 中的冒号位置错误

{
    "actualArrivalDateTime":"2021-09-07T10:00", 
    "containerNumber:" "000",
    "shipmentNumber": aaaa1, 
    "containerSequence":3,  
    "placeOfArrival": {
        "pointSequence": 2
    }
}

应该是这样的,

{
    "actualArrivalDateTime": "2021-09-07T10:00",
    "containerNumber": "000",
    "shipmentNumber": "aaaa1",
    "containerSequence": 3,
    "placeOfArrival": {
        "pointSequence": 2
    }
}

http://sandbox.onlinephpfunctions.com/code/e8294e0b699bf560618dfa44efe9f09b892ecc31

<?php

$jsonString = '{
    "actualArrivalDateTime": "2021-09-07T10:00",
    "containerNumber": "000",
    "shipmentNumber": "aaaa1",
    "containerSequence": 3,
    "placeOfArrival": {
        "pointSequence": 2
    }
}';

// Convert it to an object
$jsonObject = json_decode($jsonString);

// Now change it
$jsonObject->containerNumber = '001';

// Convert it back to a JSON string. 
echo json_encode($jsonObject);

【讨论】:

  • 非常感谢,完美运行!
  • 嗨,感谢您的帮助。你知道我如何检查服务器响应是否为 200 吗?感谢您的帮助
  • 你用什么来发出请求? AJAX、CURL、Guzzle?问一个新问题可能会更好。
  • 我使用 curl: curl_setopt($curlB, CURLOPT_POSTFIELDS, $dataB); //仅用于调试! curl_setopt($curlB, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curlB, CURLOPT_SSL_VERIFYPEER, false);
  • 我可以通过短信联系你吗?我可以更好地解释......在这里我不能发布新的问题或答案,我只能写评论:(
猜你喜欢
  • 2015-05-01
  • 2017-06-11
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 2014-08-31
相关资源
最近更新 更多