An api sends me a JSON, I receive it in PHP and sent it to Phayton to process it, the problem is to convert it to an object to extract the data, it gives error all the time It gives me these errors:
ERROR: (, JSONDecodeError ('Expecting property name enclosed in double quotes: line 1 column 2 (char 1) ',),)
PHP code:
<?php header('Content-Type: application/json');
ob_start();
$json = file_get_contents('php://input');
$request = json_decode($json, true);
$peticion = json_encode($request);
ob_end_clean();
$request = json_decode($data, true);
$peticion = json_encode($request);
exec('sct.py ' . $peticion);
?>
Python code:
import json
import urllib.request
import urllib.parse
import sys
print("Content-Type: text/html\n")
try:
data1 = json.loads(json.dumps(sys.argv[1]))
data = json.loads(''.join(data1).replace("'", '"'))
#ahora recorremos el json en busqueda de parametro requerido
dataLista =([x['parameters'] for x in data['queryResult']['outputContexts']])
url = 'https://api.telegram.org/bot/sendMessage?chat_id=&text=P2: '+ json.dumps(dataLista[0])
f = urllib.request.urlopen(url)
print(f.read().decode('utf-8'))
#cambiamos de lista a diccionario
dataDiccionario = dict (dataLista[0])
#declaramos que lista ordenes es una lista de valores(values) de dataDiccionario
ordenes = dataDiccionario.values()
#recorremos el diccionario en busqueda de objeto(str) que termina en .original'
for objeto in dataDiccionario:
#si la clave(str) termina con 'original'
if objeto[-8:] == 'original':
#imrimimos el valor de la clave
datafinal = dataDiccionario[objeto]
print (dataDiccionario[objeto])
url = 'https://api.telegram.org/bot/sendMessage?chat_id=&text=P3: '+ dataDiccionario[objeto]
f = urllib.request.urlopen(url)
print(f.read().decode('utf-8') )
The Json that I must process:
{
"responseId":"6c3008ec-8614-4e04-931c-aea5b5c4b986",
"queryResult":{
"queryText":"s\u00ed","action":"BajarSubirEquipaje.BajarSubirEquipaje-yes",
"parameters":[],
"allRequiredParamsPresent":true,
"fulfillmentText":"Confirmado! Ahora vendr\u00e1 un botones.(se env\u00eda la informaci\u00f3n sobre botones al ordenador de recepci\u00f3n o cualquier otro dispositivo deseado)",
"fulfillmentMessages":[{
"text":{
"text":["Confirmado! Ahora vendr\u00e1 un botones.(se env\u00eda la informaci\u00f3n sobre botones al ordenador de recepci\u00f3n o cualquier otro dispositivo deseado)"]
}
}],
"outputContexts":[{
"name":"projects/bajarsubirequipaje-followup",
"lifespanCount":1,
"parameters":{
"bajarSubirEquipaje.original":"Bajar equipaje",
"necesitoCosas2.original":"",
"bajarSubirEquipaje":"bajar equipaje",
"necesitoCosas2":""
}
},
{
"name":"projects\/generic",
"lifespanCount":3,
"parameters":{
"bajarSubirEquipaje.original":"Bajar equipaje",
"telegram_chat_id":000006,
"necesitoCosas2.original":"",
"bajarSubirEquipaje":"bajar equipaje",
"necesitoCosas2":""}
}
],
"intent":{
"name":"projects\-42ff96b382db",
"displayName":"BajarSubirEquipaje - yes"
},
"intentDetectionConfidence":1,
"diagnosticInfo":[],
"languageCode":"es"
},
"originalDetectIntentRequest":{
"payload":{
"data":{
"update_id":277748595,
"callback_query":{
"data":"s\u00ed","from":{
"language_code":"ru",
"id":423485916,
"is_bot":false,
"first_name":"Sergio",
"username":"SergioBogatsky"
},
"id":"1818858163814866308",
"message":{
"date":17781646,
"chat":{
"id":423477716,
"type":"private",
"first_name":"nn",
"username":"Snn"
},
"message_id":72777,
"from":{
"id":4958648491,
"is_bot":true,
"first_name":"UC",
"username":"UC"
},
"text":"\u00bfDe acuerdo. \u00bfConfirma Usted que quiere que un botones le ayude con equipaje?"
},
"chat_instance":"-781907969540610"
}
},
"source":"telegram"
}
},
"session":"projects-9bb2-711de53137cb"
}