Jump to content

Recommended Posts

Posted

aha thanks for clarification

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

  Reveal hidden contents

Signature last update: 2023-04-24

  • 5 months later...
Posted (edited)

Hello guyz !

i'm pulling my hairs with this problem since this morning.

i have a json that I can show you part of it below :

image.png.12e4099285067d1b5389d7767520c9b6.png

i can get the value for code but i cant get the value for values.name[0].data

this the part of  my code, in $response i receive the json above from an API request : 

$Data = Json_Decode($response)
$api_code           = json_ObjGet($Data, ".code")
$api_productname    = json_ObjGet($Data, ".values.name[0].data")

msgbox(0,"",$api_code & @crlf & $api_productname)

And that's what i have in the msgbox

image.png.be5d303e58b7a361ec12ff700791c869.png

whatever i try to get, as long there is an array in the path, it returns me nothing...

i tried this syntax also, but same result :

$api_productname    = json_ObjGet($Data, "values.name[0].data")

$api_productname    = json_ObjGet($Data, "[values][name][0][data]")

$api_productname    = json_ObjGet($Data, '["values"]["name"][0]["data"]')

i added a $json = Json_Dump($response) to be sure the path is correct, and that's what i can see in the console :

 image.png.741244f8f86ce936193c4a8c5cf4b1b6.png

What am i doing wrong ??

Edited by cetipabo
Posted (edited)
  On 10/20/2023 at 1:43 PM, Jos said:

It is always helpfull when you want help to post the data in a text format (attached file)  so I/we can play with it and test. ;) 

Expand  

sorry i was affraid that the json was too big. So we can do this :

 

#include <Json.au3>

$response = '{"code":"JYJY496","family":"security_shoes","family_variant":"security_shoes_by_size","parent":null,"categories":["c_j_synergy"],"values":{"marque":[{"locale":null,"scope":null,"data":"jallatte"}],"statut":[{"locale":null,"scope":null,"data":"0"}],"couleur":[{"locale":null,"scope":null,"data":"noir"}],"fabrication":[{"locale":null,"scope":null,"data":"tunisie"}],"type_chaussure":[{"locale":null,"scope":null,"data":"chaussures_de_securite_hautes"}],"systeme_de_fermeture":[{"locale":null,"scope":null,"data":"quicklio"}],"besoin":[{"locale":null,"scope":null,"data":["restitution_d_energie"]}],"activity":[{"locale":null,"scope":null,"data":["gros_oeuvre_tp_travaux_exterieurs"]}],"norme_iso":[{"locale":null,"scope":null,"data":["en_iso_20345_2011"]}],"marquage_ce":[{"locale":null,"scope":null,"data":["ci","hi","s3","src"]}],"photo_produit":[{"locale":null,"scope":null,"data":"1\/4\/a\/1\/14a114908cf6fc5f9447f4aca0cfa581ce00dc1c_JYJY496_JALTANO_SAS_ESD_lr.jpg","_links":{"download":{"href":"https:\/\/xxxxxx-staging.cloud.akeneo.com\/api\/rest\/v1\/media-files\/1\/4\/a\/1\/14a114908cf6fc5f9447f4aca0cfa581ce00dc1c_JYJY496_JALTANO_SAS_ESD_lr.jpg\/download"}}}],"name":[{"locale":"fr_FR","scope":null,"data":"JALTANO SAS ESD S3 CI HI SRC"}],"name_tech":[{"locale":null,"scope":null,"data":"JALTANO SAS ESD S3 CI HI SRC"}],"weight":[{"locale":null,"scope":null,"data":{"amount":"1482.0000","unit":"GRAM"}}],"weight_brut":[{"locale":null,"scope":null,"data":{"amount":"1717.0000","unit":"GRAM"}}],"privatif":[{"locale":null,"scope":null,"data":false}],"specifique":[{"locale":null,"scope":null,"data":false}],"sra_plat":[{"locale":null,"scope":null,"data":"0.7300"}],"srb_plat":[{"locale":null,"scope":null,"data":"0.3000"}],"sra_talon":[{"locale":null,"scope":null,"data":"0.7000"}],"srb_talon":[{"locale":null,"scope":null,"data":"0.2800"}],"descriptif":[{"locale":"fr_FR","scope":"web","data":"Chaussure de s\u00e9curit\u00e9 montante de style outdoor, con\u00e7ue avec une technologie anti-fatigue. Coloris noir. Chaussures\n\u00e9lectrostatiques dissipatrices ESD de classe environnementale II test\u00e9es suivant la norme EN 61340-4-3 et EN 61340-5-1\nprot\u00e9geant les dispositifs \u00e9lectroniques contre les ph\u00e9nom\u00e8nes de d\u00e9charge \u00e9lectrostatique."}]},"created":"2023-10-16T09:11:48+00:00","updated":"2023-10-16T15:01:13+00:00","associations":{"Embout":{"products":["PU00041"],"product_models":[],"groups":[]},"antiperforation":{"products":[],"product_models":[],"groups":[]},"doublure":{"products":[],"product_models":[],"groups":[]},"prem_de_proprete":{"products":["TL00166"],"product_models":[],"groups":[]},"semelle":{"products":["SM00002"],"product_models":[],"groups":[]},"tige":{"products":["PL00028"],"product_models":[],"groups":[]}},"quantified_associations":{},"metadata":{"workflow_status":"working_copy"}}'

$Data               = Json_Decode($response)
$api_code           = json_ObjGet($Data, ".code")
$api_productname    = json_ObjGet($Data, ".values.name[0].data")

msgbox(0,"",$api_code & @crlf & $api_productname)

 

Edited by cetipabo
  • Developers
Posted (edited)

Have a look at this code and see if that explains it:

#include "Json.au3"
$response = '{"code":"JYJY496","family":"security_shoes","family_variant":"security_shoes_by_size","parent":null,"categories":["c_j_synergy"],"values":{"marque":[{"locale":null,"scope":null,"data":"jallatte"}],"statut":[{"locale":null,"scope":null,"data":"0"}],"couleur":[{"locale":null,"scope":null,"data":"noir"}],"fabrication":[{"locale":null,"scope":null,"data":"tunisie"}],"type_chaussure":[{"locale":null,"scope":null,"data":"chaussures_de_securite_hautes"}],"systeme_de_fermeture":[{"locale":null,"scope":null,"data":"quicklio"}],"besoin":[{"locale":null,"scope":null,"data":["restitution_d_energie"]}],"activity":[{"locale":null,"scope":null,"data":["gros_oeuvre_tp_travaux_exterieurs"]}],"norme_iso":[{"locale":null,"scope":null,"data":["en_iso_20345_2011"]}],"marquage_ce":[{"locale":null,"scope":null,"data":["ci","hi","s3","src"]}],"photo_produit":[{"locale":null,"scope":null,"data":"1\/4\/a\/1\/14a114908cf6fc5f9447f4aca0cfa581ce00dc1c_JYJY496_JALTANO_SAS_ESD_lr.jpg","_links":{"download":{"href":"https:\/\/jallatte-staging.cloud.akeneo.com\/api\/rest\/v1\/media-files\/1\/4\/a\/1\/14a114908cf6fc5f9447f4aca0cfa581ce00dc1c_JYJY496_JALTANO_SAS_ESD_lr.jpg\/download"}}}],"name":[{"locale":"fr_FR","scope":null,"data":"JALTANO SAS ESD S3 CI HI SRC"}],"name_tech":[{"locale":null,"scope":null,"data":"JALTANO SAS ESD S3 CI HI SRC"}],"weight":[{"locale":null,"scope":null,"data":{"amount":"1482.0000","unit":"GRAM"}}],"weight_brut":[{"locale":null,"scope":null,"data":{"amount":"1717.0000","unit":"GRAM"}}],"privatif":[{"locale":null,"scope":null,"data":false}],"specifique":[{"locale":null,"scope":null,"data":false}],"sra_plat":[{"locale":null,"scope":null,"data":"0.7300"}],"srb_plat":[{"locale":null,"scope":null,"data":"0.3000"}],"sra_talon":[{"locale":null,"scope":null,"data":"0.7000"}],"srb_talon":[{"locale":null,"scope":null,"data":"0.2800"}],"descriptif":[{"locale":"fr_FR","scope":"web","data":"Chaussure de s\u00e9curit\u00e9 montante de style outdoor, con\u00e7ue avec une technologie anti-fatigue. Coloris noir. Chaussures\n\u00e9lectrostatiques dissipatrices ESD de classe environnementale II test\u00e9es suivant la norme EN 61340-4-3 et EN 61340-5-1\nprot\u00e9geant les dispositifs \u00e9lectroniques contre les ph\u00e9nom\u00e8nes de d\u00e9charge \u00e9lectrostatique."}]},"created":"2023-10-16T09:11:48+00:00","updated":"2023-10-16T15:01:13+00:00","associations":{"Embout":{"products":["PU00041"],"product_models":[],"groups":[]},"antiperforation":{"products":[],"product_models":[],"groups":[]},"doublure":{"products":[],"product_models":[],"groups":[]},"prem_de_proprete":{"products":["TL00166"],"product_models":[],"groups":[]},"semelle":{"products":["SM00002"],"product_models":[],"groups":[]},"tige":{"products":["PL00028"],"product_models":[],"groups":[]}},"quantified_associations":{},"metadata":{"workflow_status":"working_copy"}}'
$Data = Json_Decode($response)
$api_code  = Json_Get($Data, ".code")
$apinameobj = Json_ObjGet($Data,".values.name")
$api_productname= Json_Get($apinameobj, "[0].data")
ConsoleWrite("$api_code:" & $api_code & @crlf)
ConsoleWrite("$api_productname:" & $api_productname& @crlf)

 

Edited by Jos

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

  • 2 weeks later...
Posted

hi all

haven't been able to find a post of anyone asking this but is there a way to concatenate multiple JSON files? 

thanks in advance!

  • Developers
Posted
  On 10/30/2023 at 3:31 PM, gcue said:

haven't been able to find a post of anyone asking this but is there a way to concatenate multiple JSON files? 

Expand  

Nope...   and when you think about it....  how would that work without any logic on what concatenation really means as I assume you like to merge that data of 2 JSON files?

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Posted
  On 10/30/2023 at 4:17 PM, Jos said:

Nope...   and when you think about it....  how would that work without any logic on what concatenation really means as I assume you like to merge that data of 2 JSON files?

Expand  

just a thought because i do see it done in other languages. so would be nice to do json parsing and/orcombining all in autoit :)

https://www.google.com/search?rlz=1C1GCCA_enUS1067US1067&{google:acceptedSuggestion}oq=&sourceid=chrome&ie=UTF-8&q=combine+2+json+files

 

  • 1 month later...
Posted (edited)

I have a strange JSON:
It is a combination of JSON and DICT
I mean it is looking almost like normal JSON but one token is reversed I mean one single token is DICT

So wondering how to convert DICT token  > JSON with this UDF ?

Dict_to_JSON_Python.png


https://favtutor.com/blogs/dict-to-json-python

Edited by mLipok

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

  Reveal hidden contents

Signature last update: 2023-04-24

Posted
  On 12/4/2023 at 10:22 PM, mLipok said:

I have a strange JSON:
It is a combination of JSON and DICT

Expand  

a quick example created by hand:

{
    "Name": "Michał",
    "Number": 10,
    "{\"Name\":\"Adam\",\"Number\":20}": null
}

I need to extract:

{"Name":"Adam","Number":20}

just using JSON UDF - I mean not using any RegExp tricks.

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

  Reveal hidden contents

Signature last update: 2023-04-24

Posted

Here's one way --

#include "JSON.au3" ; https://www.autoitscript.com/forum/topic/148114-a-non-strict-json-udf-jsmn

$sJSON = '{' & _
    '"Name": "Michał",' & _
    '"Number": 10,' & _
    '"{\"Name\":\"Adam\",\"Number\":20}": null' & _
    '}'

$oJSON = Json_Decode($sJSON)
$aKeys = Json_ObjGetKeys($oJSON)

$sJSON = $aKeys[2]
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sJSON = ' & $sJSON & @CRLF & '>Error code: ' & @error & @CRLF)

You could likely do it via the jq UDF as well.

Posted

This did the trick

thanks.

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

  Reveal hidden contents

Signature last update: 2023-04-24

Posted (edited)

So finally I have such script:
 

;~ #include "JSON.au3" ; https://www.autoitscript.com/forum/topic/148114-a-non-strict-json-udf-jsmn
#include "z:\!!!_SVN_AU3\UDF_Forum\Other_Members\Json.au3"

_Example()
Func _Example()
    Local $sJSON = _
            '{' & _
            '   "Name": "Michal",' & _
            '   "Number": 10,' & _
            '   "{\"Name\":\"Adam\",\"Number\":20}": null' & _
            '}'

    Local $sJSON_Key = _JSON_DictToJSON($sJSON, 2)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sJSON_Key = ' & $sJSON_Key & @CRLF & '>Error code: ' & @error & @CRLF)

EndFunc   ;==>_Example

Func _JSON_DictToJSON($sJSON, $iKEY)
    Local $oJSON = Json_Decode($sJSON)
    Local $aKeys = Json_ObjGetKeys($oJSON)
    Return $aKeys[$iKEY]
EndFunc   ;==>_JSON_DictToJSON

and result:

  Quote

@@ Debug(14) : $sJSON_Key = {"Name":"Adam","Number":20}

Expand  

 

Edited by mLipok

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

  Reveal hidden contents

Signature last update: 2023-04-24

  • 6 months later...
  • 10 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...