2015-01-30 2 views
0

у меня есть объект JS:JSON.stringify квадратные скобки

var source = {}; 
source.quantity = 1; 
source.text = 'test'; 

Теперь я JSon его:

var json = JSON.stringify(source); 

JSON выглядит следующим образом:

{"quantity":"1","text":"test"} 

Я хотел бы, таким образом:

[{"quantity":"1"},{"text":"test"}] 

Хо, я могу это сделать?

+0

«Квадратные скобки» представляют собой массив. Итак, все, что вам нужно сделать, это строка массива. Однако почему вы хотите выделить каждое свойство в свой собственный объект? Это не очень полезно. –

+0

@FelixKling, потому что PHP json_decode() не нравится: {"quantity": "1", "text": "test"} – Miklos

+0

Это бессмыслица, конечно, 'json_decode' понимает действительный JSON: http: // ideone. com/WobRm8 –

ответ

3

Получить все keys как массиву их map их объекты как ключ-значение пар из source

JSON.stringify(
    Object.keys(source) 
      .map(
       function (e) { 
        var o = {}; 
        o[e] = source[e]; 
        return o; 
       } 
     ) 
); // "[{"quantity":1},{"text":"test"}]" 
+1

OP хочет массив с двумя объектами (я знаю, не спрашивайте меня почему). –

+0

@FelixKling такая плохая структура данных, где вам нужно угадать (или попытаться найти) ключи:/ –

+0

Моя проблема не была связана с json-форматом, однако этот пост ответил на исходный вопрос. Благодарю. – Miklos

1
var json = JSON.stringify([ 
    {quantity: "1"}, 
    {text: "test"} 
]); 
1

Я предполагаю, что это не возможно, но вы можете сделать это :

var source = {}; 
source.quantity = 1; 
source.text = 'test'; 

var result = []; 

for(var i in source) { 
    var obj = {}; 
    obj[i] = source[i]; 
    result.push(obj); 
} 

var json = JSON.stringify(result); 

Надеюсь, это может вам помочь.