2016-08-12 2 views
3

У меня есть JSON-файл, как это,чтения JSON данные Javascript и обрезать строку

{ 
    "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' для доступа к свойству объекта. Чтобы «обрезать» строку (я думаю, вы имеете в виду найти какую-то конечную часть), существует несколько альтернатив, включая использование регулярного выражения, например '/ [^ \\] * $ /'. –

ответ

0

json.data.inputs является массивом (обратите внимание, что это json, а Tushar указал, вы убылjason в вопросе). Таким образом, вы можете использовать любую технику для доступа или петли через массив, поддерживаемый вашей средой. Похоже, вы используете JScript для Windows Script Host; Наконец-то я проверил это не было даже возможности 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; вам нужно значение value для первого и третьего элементов:

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

Смежные вопросы