首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何用PHP写一个像这样的JSON文件呢?

我如何用PHP写一个像这样的JSON文件呢?
EN

Stack Overflow用户
提问于 2020-02-15 22:09:35
回答 1查看 42关注 0票数 0
代码语言:javascript
复制
{
    "general": {
        "knx_Gateway": "te",
        "knx_Port": "gas",
        "knx_Medium": "TP1",
        "knx_timezone": "+3"
    },
    "devices":[
      {
        "id": "0",
        "knx_dn": "testing",
        "knx_ga": "2",
        "knx_dt": "Bit"
      },
      {
        "id": "1",
        "knx_dn": "0",
        "knx_ga": "0",
        "knx_dt": "Bit"
      },
      {
        "id": "2",
        "knx_dn": "0",
        "knx_ga": "5",
        "knx_dt": "Byte"
      },
      {
        "id": "3",
        "knx_dn": "0",
        "knx_ga": "0",
        "knx_dt": "Byte"
      },
      {
        "id": "4",
        "knx_dn": "0",
        "knx_ga": "0",
        "knx_dt": "Byte"
      }
  ]
}

这就是我到目前为止所尝试的:

代码语言:javascript
复制
//getting the data from the HTML page into an JSON format
$knxGenSet->general->knx_Gateway = $_POST["ipgate"];
$knxGenSet->general->knx_Port = $_POST["ipport"];
$knxGenSet->general->knx_Medium = $_POST["ipmedium"];
$knxGenSet->general->knx_timezone = $_POST["iptimezone"];

for($i=0; $i<5; $i++){
    echo "The number is " . $i . "<br>";

    $knxGenSet->devices->id = $i;
    $knxGenSet->devices->knx_ga = $_POST["dn" + $i];
    $knxGenSet->devices->knx_dn = $_POST["ga" + $i];
    $knxGenSet->devices->knx_dt = $_POST["dt" + $i];
}

我不能得到设备的其他部分,似乎我在这里做错了什么,但我已经可以阅读这个json格式。阅读部分工作完美!:)

提前感谢( json版图上的菜鸟!:()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-15 22:27:16

可以使用对象指定格式:

代码语言:javascript
复制
<?php
$_POST = [
    "ipgate" => "testing",
    "ipport" => "testing",
    "ipmedium" => "testing",
    "iptimezone" => "testing",
    "dn0" => "test_1",
    "ga0" => "test_1",
    "dt0" => "test_1",
    "dn1" => "test_2",
    "ga1" => "test_2",
    "dt1" => "test_2",
];

$knxGenSet = (object) [
    'general' => (object) [],
    'devices' => []
];

$knxGenSet->general->knx_Gateway = $_POST["ipgate"];
$knxGenSet->general->knx_Port = $_POST["ipport"];
$knxGenSet->general->knx_Medium = $_POST["ipmedium"];
$knxGenSet->general->knx_timezone = $_POST["iptimezone"];

for($i=0; $i<2; $i++){
  //  echo "The number is " . $i . "<br>";

    $knxGenSet->devices[] = (object) [
        'id' => $i,
        'knx_ga' => $_POST["dn" . $i],
        'knx_dn' => $_POST["ga" . $i],
        'knx_dt' => $_POST["dt" . $i]
    ];
}

echo json_encode($knxGenSet);

结果:

代码语言:javascript
复制
{
  "general": {
    "knx_Gateway": "testing",
    "knx_Port": "testing",
    "knx_Medium": "testing",
    "knx_timezone": "testing"
  },
  "devices": [
    {
      "id": 0,
      "knx_ga": "test_1",
      "knx_dn": "test_1",
      "knx_dt": "test_1"
    },
    {
      "id": 1,
      "knx_ga": "test_2",
      "knx_dn": "test_2",
      "knx_dt": "test_2"
    }
  ]
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60239533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档