2013-11-24 76 views
0

我試圖解析經典asp中的json字符串。 A中的計算器引用一個有用的腳本:https://github.com/douglascrockford/JSON-js/blob/master/json2.js調用 '解析' 功能時解析經典ASP中的json字符串

我得到一個錯誤:

<script language="JScript" runat="server" src="json2.js"></script> 

'line 144 of my script 


Set myJSON = JSON.parse(versionsStr) 


Microsoft VBScript runtime error '800a01a8' 

Object required: '[string: "[{"self":"https://dc"]' 

/libs/asp/common/jira_api.asp, line 144 

這裏是我的JSON字符串(versionStr):

[{"self":"https://server.com:8343/rest/api/2/version/10300","id":"10300","description":"baseline version","name":"1.0","archived":false,"released":true,"releaseDate":"2013-11-07","userReleaseDate":"07/Nov/13"},{"self":"https://server.com:8343/rest/api/2/version/10301","id":"10301","description":"sample version","name":"1.1.0","archived":false,"released":false},{"self":"https://server.com:8343/rest/api/2/version/10302","id":"10302","name":"3.0.0","archived":false,"released":false}] 

林猜測我使用的腳本需要一個json對象,但是我對jira API的調用正在迴應json字符串。有人有解決方案,將json字符串解析爲經典的asp數組嗎?

+0

這些提供任何線索嗎? http://stackoverflow.com/questions/1019223/any-good-libraries-for-parsing-json-in-classic-asp,http://code.google.com/p/aspjson/ – John

+0

我已經在那裏。這導致我使用了json2.js腳本。 – prufrock

+0

versionsStr來自哪裏? – John

回答

0

你說得對。您可以從vbscript代碼調用JavaScript代碼。你可以使用json2.js腳本,但是你不能做的就是將數組從javascript傳遞給vbscript,並使用對它們的索引訪問。

將此值另存爲test.wsf並使用cscript test.wsf(確保json2.js位於同一目錄中)運行。

<?XML version="1.0" standalone="yes" encoding="utf-8" ?> 
<package> 
<job id="test" prompt="no"> 
<?job error="true" debug="true" timeout="10" ?> 

<script language="Javascript" src="json2.js" /> 

<script id="main" language="VBScript"> 
<![CDATA[ 

    Dim versionStr 
     versionStr ="[{""self"":""https://server.com:8343/rest/api/2/version/10300"",""id"":""10300"",""description"":""baseline version"",""name"":""1.0"",""archived"":false,""released"":true,""releaseDate"":""2013-11-07"",""userReleaseDate"":""07/Nov/13""}" + _ 
        ",{""self"":""https://server.com:8343/rest/api/2/version/10301"",""id"":""10301"",""description"":""sample version"",""name"":""1.1.0"",""archived"":false,""released"":false}" + _ 
        ",{""self"":""https://server.com:8343/rest/api/2/version/10302"",""id"":""10302"",""name"":""3.0.0"",""archived"":false,""released"":false}]" 

    Dim myJSON 
     Set myJSON = JSON.parse(versionStr) 

    Dim numVersions 
     numVersions = myJSON.length 

    Dim i, version 
     For i = 1 to numVersions 
      Set version = myJSON.shift() 
      WScript.Echo version.self 
     Next 


]]> 
</script> 

</job> 
</package>