2015-07-17 3 views
0

Какой самый лучший способ, чтобы получить чистый массив из этого:Извлечь значения из JSON Струнный

[{f=[{v=2521998}, {v=0}, {v=99326}]}] 

к чему-то вроде этого?

[2521998,0,99326] 

Спасибо!

+5

Кажется, недействительный json. И вы просто хотите получить значение 'v' под' f'? Существуют ли другие требования, например, если есть 'f2', вы хотите поместить их в один и тот же массив? – fuyushimoya

+3

это недействительно json – Grundy

+0

Вы имели в виду это? '[{" f ": [{" v ": 2521998}, {" v ": 0}, {" v ": 99326}]}]'? – blex

ответ

5

Как вы уже не упомянули [{f=[{v=2521998}, {v=0}, {v=99326}]}]: string или array, я включил оба ответа.

Для массива/объекта/JSON

  1. Ваш json не действует (см правильно отформатирован ниже)
  2. regex можно использовать в вашем случае.

Вы можете конвертировать object в string используя JSON.stringify, а затем использовать regex для извлечения значений из него.

var myArr = [{ 
 
    f: [{ 
 
    v: 2521998 
 
    }, { 
 
    v: 0 
 
    }, { 
 
    v: 99326 
 
    }] 
 
}]; 
 

 
var str = JSON.stringify(myArr); 
 

 
var resultArr = str.match(/\d+/g); 
 

 
alert(resultArr);

Строка

Если [{f=[{v=2521998}, {v=0}, {v=99326}]}] является string и не object/array, вам не нужно JSON.stringify.

var str = '[{f=[{v=2521998}, {v=0}, {v=99326}]}]'; 
 
var resultArr = str.match(/\d+/g); 
 

 
alert(resultArr);

REGEX Объяснение

  1. /: разделителей regex
  2. \d: Спички любая цифра
  3. +: Матчи на e или более предыдущего класса
  4. g: Глобальные совпадения.
+0

Почему вы делаете 'JSON.stringify', возможно, OP означает строку вместо простого объекта? – Grundy

+0

@ Grundy Право. Я обновил ответ – Tushar

+1

@blex, теперь больше людей, когда говорят JSON, означает простой объект вместо строки :-), поэтому мы можем только догадываться, что означает OP :-) – Grundy

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