2016-08-12 53 views
3

我有這樣的JSON文件,讀取JSON數據和修剪串

{ 
    "data":{ 
     "type": "runjob", 
     "id": "1", 
     "inputs": [ 
      { 
       "name": "input", 
       "value": "d:\\My\\filestore\\JMJ\\Content\\input.xml" 
      }, 
      { 
       "name": "cmd", 
       "value": "test.js //NoLogo" 
      }, 
      { 
       "name": "output", 
       "value": "d:\\My\\filestore\\JMJ\\Content\\output.xml" 
      } 
     ], 
     "disabled": false 
    } 
} 

我需要閱讀velues,input.xml中和的Output.xml使用JavaScript ..我怎樣才能獲得這些價值?

var stdin = WScript.StdIn.ReadAll(); 
var json = eval('(' + stdin + ')'); 

var log = new Log(json.data.inputs[?]); 
+1

'jason' ==>'json'。 – Tushar

+0

請勿使用'eval'來解析JSON。使用'JSON.parse'。至於如何訪問生成的JS對象中的變量,這是基本的:使用'array [n]'訪問數組的第* n *個元素,或者使用'object.prop'來訪問對象的屬性。爲了「修剪」一個字符串(我想你的意思是找到一些尾部),有幾種選擇,包括使用諸如'/ [^ \\] * $ /'的正則表達式。 – 2016-08-12 12:42:44

回答

0

json.data.inputs是一個數組(注意這是json;作爲圖莎爾指出的那樣,你的問題有jason)。因此,您可以使用任何技術來訪問或循環環境支持的陣列。它看起來像你在Windows Script Host上使用JScript;最後我檢查它甚至沒有ES5功能,所以可能是一個簡單的for循環:

var i; 
var inputs = json.data.inputs; 
for (i = 0; i < inputs.length; ++i){ 
    // Here, inputs[i].name will be the name ("input", "cmd", "output") 
    // and inputs[i].value will be the value ("d:\\My\\filestore\\JMJ\\Content\\input.xml", for instance) 
} 
0

json.data.inputs是含有3個JSON對象的陣列;你需要第一個和第三個元素的值屬性:

json.data.inputs[0].value; // "d:\\My\\filestore\\JMJ\\Content\\input.xml" 
json.data.inputs[2].value; // "d:\\My\\filestore\\JMJ\\Content\\output.xml" 
+0

雖然這可能會回答這個問題,但請提供任何解釋,以確保人們瞭解這裏發生的事情。 – Randy