我的客户给我发送了这个json,这样我就可以在mysql中循环并保存数据。我只是不能得到它,因为它不同于我的工作;
有人能给我一些提示吗?从一种格式到另一种格式有什么不同。
出现的错误是:警告:第28行中为foreach()提供的参数无效
foreach($json\u data['service\u devices']作为$key=>$value){
与我共事过的前格式化程序:
{
"ordem_de_servico": [
{
"oser_numero_os": 23940493,
"oser_address_name": NAME;
客户json
ordem_de_servico:
{
"oser_numero_os":23940493,
"oser_dt_abertura":"28/03/2018",
"servico":{
"serv_cod_servico":60,
"serv_descr_servico":"CORTE POR DEBITO"
},
"cliente":{
"clie_ident_cliente":638617,
"nome":"MARIA APARECIDA FERREIRA DO NASCIMENTO"
},
"unidade_consumidora":{
"unid_ident_uc":2436434,
"logr_nome_logr_expandido":"R JOSE GUIMARAES"
},
"faturas":[
{
"total_fatura":"88.44",
"ftcd_mes_ano_fatmto":"2017-04-01"
},
{
"total_fatura":"45.16",
"ftcd_mes_ano_fatmto":"2017-03-01"
}
]
}
我最后一次尝试
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "webservice";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Read JSON file
$json = file_get_contents('oss.json');
//Decode JSON
$json_data = json_decode($json,true);
foreach($json_data['ordens_de_servico'] as $key => $value){
$os = $value["oser_numero_os"];
$data_abertura = $value["oser_dt_abertura"];
foreach($json_data['ordens_de_servico'][$key]['faturas'] as $index => $row){
$valorParcelas = $row["total_fatura"];
$sql = "SELECT numero_os FROM os WHERE numero_os = '$os'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "PULAR FATURA"."<p>";
}else {
$sql = "INSERT INTO faturas (valorParcelas, numero_os) VALUES ('$valorParcelas', '$os')";
if ($conn->query($sql) === TRUE) {
echo "<strong>".$valorParcelas." - FATURA OK"."</strong>"."<p>";
} else {
echo "Error Fatura";
}
}
}
$sql = "SELECT numero_os FROM os WHERE numero_os = '$os'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "PULAR"."<p>";
}
else{
$sql = "INSERT INTO os (numero_os, data_abertura) VALUES ('$os', '$data_abertura')";
if ($conn->query($sql) === TRUE) {
echo "<strong>".$os." - GRAVADO"."</strong>"."<p>";
} else {
echo "Error";
}
}
}
$conn->close();
?>
2条答案
按热度按时间qlfbtfca1#
您的json不正确。主要的问题是json数据本身,它对于
json_encode()
生成php数组。第一种可能solution:remove
ordem_de_servico:
从我们的客户那里,那会有用的。为了
json_decode();
方法json数据必须有效,有效数据为第二种可能solution:what you 我能做的就是移除
ordem_de_servico:
从客户json数据中提取字符串,或者让json提供程序提供有效的json数据,如下所示ordem_de_servico:
.请查看有效的json格式
json_decode()
json数据没有不同的类型,只有一种类型,即json。5kgi1eie2#
更改行:
收件人:
因为新数据没有外部元素
ordens_de_servico
或者您可以编辑json文件并添加该元素(不要忘记在末尾添加右大括号)。编辑文件的前两行:
收件人:
{“ordem_de_servico”:[
并更改文件的结尾:
收件人: