2017-10-15 135 views
1

一個JSON數組有一個數組我以這種形式如何循環使用的AutoIt

[{"var1":"test1","var2":"test1"},{"var1":"test2","var2":"test2"},{"var1":"test3","var2":"test3"}] 

我想打一個自動化腳本,循環數組,並返回各自的var2對象

的結果應該是這樣

test1 
test2 
test3 

我有這樣的工作腳本,但我不知道如何將它應用到我的情況,因爲每個元素在JSON形式

0123對象
#include <array.au3> 

Local $array[5] = ["a", "b", "c", "d", "e"] 

_ArrayDisplay($array) 

For $i = 0 To UBound($array) - 1 

    ConsoleWrite("Testing " & $array[$i] & @CRLF) 

Next 

_ArrayDisplay($array) 

回答

2

您可以使用Json UDF來解析Autoit中的JSON。 不要忘記將Json.au3BinaryCall.au3添加到腳本的文件夾中。

例如,對於你的問題:

#include "Json.au3" 
#include <Array.au3> 

$sJson = '[{"var1":"test1","var2":"test1"},{"var1":"test2","var2":"test2"},{"var1":"test3","var2":"test3"}]' 
$oJSON = Json_Decode($sJson) 

If IsArray($oJSON) Then 
    For $i=0 to UBound($oJSON)-1 
     $res = Json_ObjGet($oJSON[$i], "var2") 
      ConsoleWrite($res & @CRLF) 
    Next 
EndIf 
1

你有沒有UDF的還有選擇:

$str = '[{"var1":"test1","var2":"test1"},{"var1":"test2","var2":"test2"},{"var1":"test3","var2":"test3"}]' 
$aVar2 = StringRegExp($str , '"var2":"(.*?)"' , 3) 
$sOut = "" 

For $i = 0 To UBound($aVar2) - 1 
    $sOut &= $aVar2[$i] & @LF 
Next 

MsgBox(0, '' , $sOut)