Что нового

как работать с Json ?

mitiya

Новичок
Сообщения
75
Репутация
0
Пытаюсь сделать скрипт который взаимодействует с api dropbox.
Сейчас мне надо получить список папок хотя бы.
Для этого я использую вот такую функцию.
Код:
Func dbifoGet($Auth,$path="")	
	$path=StringReplace($path,"\","/")
	; Creating the object
	ConsoleWrite("vars: " & $Auth & ";" & $path & @CRLF)
	ConsoleWrite("vars: " & "https://api.dropbox.com/1/metadata/auto/"&$path & @CRLF)
	
	$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
	$oHTTP.Open("GET", "https://api.dropbox.com/1/metadata/auto/"&$path, False)
	$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded;")
	$oHTTP.SetRequestHeader("Authorization","Bearer "&$Auth)
	; Performing the Request
	$oHTTP.Send()

	; Download the body response if any, and get the server status response code.
	$oReceived = $oHTTP.ResponseText
	$oStatusCode = $oHTTP.Status
	If $oStatusCode <> 200 then
		return 1
		ConsoleWrite("Response code: " & $oHTTP.ResponseText & @CRLF)
	EndIf
	ConsoleWrite("Response code: " & $oHTTP.ResponseText & @CRLF)
	return 0
EndFunc


Она не дописана, я ответе получаю Json.
Код:
{"hash": "7faa850f53396d19db27d3bb8ae66a4f", "thumb_exists": false, "bytes": 0, "path": "/", "is_dir": true, "icon": "folder", "root": "app_folder", "contents": [{"bytes": 0, "rev": "32c269808", "revision": 3, "icon": "folder", "path": "/0", "is_dir": true, "thumb_exists": false, "root": "app_folder", "modified": "Sun, 26 Oct 2014 21:45:46 +0000", "size": "0 bytes"}, {"bytes": 0, "rev": "a2c269808", "revision": 10, "icon": "folder", "path": "/test", "is_dir": true, "thumb_exists": false, "root": "app_folder", "modified": "Mon, 27 Oct 2014 14:22:48 +0000", "size": "0 bytes"}, {"rev": "72c269808", "thumb_exists": false, "path": "/test000.txt", "is_dir": false, "client_mtime": "Mon, 27 Oct 2014 14:16:21 +0000", "icon": "page_white_text", "bytes": 16, "modified": "Mon, 27 Oct 2014 14:16:21 +0000", "size": "16 bytes", "root": "app_folder", "mime_type": "text/plain", "revision": 7}, {"rev": "12c269808", "thumb_exists": false, "path": "/test.txt", "is_dir": false, "client_mtime": "Sun, 26 Oct 2014 21:44:21 +0000", "icon": "page_white_text", "bytes": 10, "modified": "Sun, 26 Oct 2014 21:44:21 +0000", "size": "10 bytes", "root": "app_folder", "mime_type": "text/plain", "revision": 1}], "size": "0 bytes"}

Его бы надо распарсить, но просто парсить как текст как не хочется, это же по идея объект. Но я не понимаю ни как его загрузить в объект autoit, да и дальше как с ним работать то же не пойму.
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
mitiya
Посмотри, может окажется полезным :smile: ТЫК
 
Автор
M

mitiya

Новичок
Сообщения
75
Репутация
0
О спасибо добрый человек.
С помощью этого https://www.autoitscript.com/forum/topic/148114-jsmn-a-non-strict-json-udf/
Делаю вот это теперь. Дальше уже можно с этим работать.
Код:
Local $Obj = Jsmn_Decode($oHTTP.ResponseText)

$arr = ObjPath($Obj, 'contents')
 
For $i = 0 To (UBound($arr, 1) - 1)
	
	ConsoleWrite("$Data1=" & ObjPath($arr[$i], "path") & " is_dir:" & ObjPath($arr[$i], 'is_dir') & @CRLF)
	
Next
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
mitiya
OffTopic:
Ох, да, и ссылочка на "JSMN - A Non-Strict JSON UDF" у меня завалялась.. Забыл про неё :(
 
Верх