高斯数据库如何解析json

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高斯数据库如何解析json相关的知识,希望对你有一定的参考价值。

参考技术A 高斯数据库解析json如下:
先将json转成struct。然后json.Unmarshal即可。json转struct,可以直接用在线的工具:https://mholt.github.io/json-to-go/在左边贴上json后面就生成struct了。
高斯数据库是由华为于2019年5月15日在北京发布的一款人工智能原生数据库。该数据库支持本地部署、私有云、公有云等多种场景。

如何解析 JSON 并访问结果

【中文标题】如何解析 JSON 并访问结果【英文标题】:How to parse JSON and access results 【发布时间】:2013-06-05 16:09:48 【问题描述】:

我正在使用 CURL 发送请求。响应数据类型为json。如何解析这些数据并将其插入数据库?

<?php

$url = 'http://sms2.cdyne.com/sms.svc/SimpleSMSsendWithPostback?        PhoneNumber=18887477474&Message=test&LicenseKey=LICENSEKEY';

$cURL = curl_init();

curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_HTTPGET, true);

curl_setopt($cURL, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Accept: application/json'
));

$result = curl_exec($cURL);

curl_close($cURL);



print_r($result);

?>

JSON 输出:


    "Cancelled": false,
    "MessageID": "402f481b-c420-481f-b129-7b2d8ce7cf0a",
    "Queued": false,
    "SMSError": 2,
    "SMSIncomingMessages": null,
    "Sent": false,
    "SentDateTime": "/Date(-62135578800000-0500)/"

【问题讨论】:

试试json_decode 我会建议您从原始帖子中删除您的许可证密钥?人们也许可以使用它从您正在使用的服务发送短信。 旋转按键。无论如何,在编辑后的序列中,许可证密钥是可见的。 【参考方案1】:

如果您的$result 变量是类似json 的字符串,则必须使用json_decode 函数将其解析为objectarray

$result = '"Cancelled":false,"MessageID":"402f481b-c420-481f-b129-7b2d8ce7cf0a","Queued":false,"SMSError":2,"SMSIncomingMessages":null,"Sent":false,"SentDateTime":"\/Date(-62135578800000-0500)\/"';
$json = json_decode($result, true);
print_r($json);

输出

Array
(
    [Cancelled] => 
    [MessageID] => 402f481b-c420-481f-b129-7b2d8ce7cf0a
    [Queued] => 
    [SMSError] => 2
    [SMSIncomingMessages] => 
    [Sent] => 
    [SentDateTime] => /Date(-62135578800000-0500)/
)

现在您可以将$json 变量用作数组:

echo $json['MessageID'];
echo $json['SMSError'];
// other stuff

参考资料:

json_decode - PHP 手册

【讨论】:

【参考方案2】:

您的示例代码的主要问题是用于存储curl_exec() 的输出的$result 变量不包含HTTP 响应的主体——它包含值true。如果你尝试print_r(),它只会说“1”。

curl_exec() reference 解释:

返回值

成功时返回 TRUE 或失败时返回 FALSE。但是,如果设置了 CURLOPT_RETURNTRANSFER 选项,它将在成功时返回结果,FALSE 在失败时返回。

因此,如果您想在 $result 变量中获取 HTTP 响应正文,则必须先运行

curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);

之后,您可以在$result 上致电json_decode(),正如其他答案所指出的那样。

总的来说 - PHP 的 curl 库很有用,并且有很多功能可以处理 HTTP 协议(​​和其他协议)的细节,但如果你想要的只是 GET 一些资源甚至 POST访问某个 URL,然后阅读响应 - 然后file_get_contents() 就是您所需要的:它使用起来更简单,而且不用担心令人惊讶的行为。

【讨论】:

【参考方案3】:

试试:

$result = curl_exec($cURL);
$result = json_decode($result,true);

现在您可以从$result['MessageID'] 访问MessageID

至于数据库,它只是使用这样的查询:

INSERT INTO `tableName`(`Cancelled`,`Queued`,`SMSError`,`SMSIncommingMessage`,`Sent`,`SentDateTime`) VALUES('?','?','?','?','?');

准备好了。

【讨论】:

以上是关于高斯数据库如何解析json的主要内容,如果未能解决你的问题,请参考以下文章

c如何解析json数据

如何解析json中map数据

PHP解析JSON

解析复杂JSON数据

如何在PHP中解析json

前端json请求,后端date无法解析该如何解析