Code: Select all
2021-06-01,books,2
2021-02-01,book,28
2021-01-01,book three,00
2021-08-01,vols,30
Code: Select all
date,title,chap ; currently add this manually
2021-06-01,books,2
2021-02-01,book,28
2021-01-01,book three,00
2021-08-01,vols,30
Sample script
Code: Select all
jsonData =
(
{
"err":"0",
"data":[
{
"date":"2021-06-01",
"title":"books",
"chap":"2"
},
{
"date":"2021-02-01",
"title":"book",
"chap":"28"
},
{
"date":"2021-01-01",
"title":"book three",
"chap":"00"
},
{
"date":"2021-08-01",
"title":"vols",
"chap":"30"
}
]
}
)
obj := JsonToAHK(jsonData)
loop, % obj.data.length()
{
generateData .= obj.data[a_index].date "," obj.data[a_index].title "," obj.data[a_index].chap "`n"
}
MsgBox, % RTrim(generateData,"`n")
; in real life here it would fileappend and create a csv for this demo I am using a msgbox
ExitApp
JsonToAHK(json, rec := false) {
static doc := ComObjCreate("htmlfile")
, __ := doc.write("<meta http-equiv=""X-UA-Compatible"" content=""IE=9"">")
, JS := doc.parentWindow
if !rec
obj := JsonToAHK(JS.eval("(" . json . ")"), true)
else if !IsObject(json)
obj := json
else if json.toString() != "[object Object]" {
obj := []
Loop % json.length
obj.Push( JsonToAHK(json[A_Index - 1], true) )
}
else {
obj := {}
keys := JS.Object.keys(json)
Loop % keys.length {
k := keys[A_Index - 1]
obj[k] := JsonToAHK(json[k], true)
}
}
Return obj
}