将字符串与JSON.stringify(Javascript)组合

时间:2012-11-20 09:56:27

标签: javascript json

好的,这个问题可能很愚蠢,但我真的坚持这个。

我想要一个像以下一样的json结构:

order: {
    currency: 'eur',
    order_items: [
        {
            id: 3,
            quantity: 1
        },
        {
            id: 67,
            quantity: 1
        }
    ]
}

我现在正在做的是:

function makeOrder(){
    var myArray = new Array();
    for(var i=0;i<bookedItemsArray.length;i++){
        var newObject = new OrderedItem(bookedItemsArray[i].id, bookedItemsArray[i].amount);
        myArray.push(newObject);
    }
    var mystring = JSON.stringify(myArray);
    //myString = "order: {currency: 'eur', order_items: " + myString + "}";
    console.log(myString);​
}

我在order_items数组中获取数据的方式很酷,但是当我尝试使用其余部分(注释中的行)连接数组时,我得到:

?:??: W/?(?): Uncaught SyntaxError: Unexpected token ILLEGAL at file:///android_asset/www/november/js/t03/Booking/bookingProcess.js:96

关于字符串和JSON结构的组合方式,我是否遗漏了什么?

非常感谢。

3 个答案:

答案 0 :(得分:1)

你为什么不这样做?

var x = {
    order: {
        currency: 'eur',
        order_items: []
    }
};
for (var i = 0; i < 10; i++) {
    var newObject = {
        i: i,
        Text: 'Some Text'
    };
    x.order.order_items.push(newObject);
}

var str = JSON.stringify(x);

看看这个小提琴:http://jsfiddle.net/9V6Vb/

这是生成的JSON:

{
    "order": {
        "currency": "eur",
        "order_items": [{
            "i": 0,
            "Text": "Some Text"},
        {
            "i": 1,
            "Text": "Some Text"},
        {
            "i": 2,
            "Text": "Some Text"},
        {
            "i": 3,
            "Text": "Some Text"},
        {
            "i": 4,
            "Text": "Some Text"},
        {
            "i": 5,
            "Text": "Some Text"},
        {
            "i": 6,
            "Text": "Some Text"},
        {
            "i": 7,
            "Text": "Some Text"},
        {
            "i": 8,
            "Text": "Some Text"},
        {
            "i": 9,
            "Text": "Some Text"}]
    }
}​

答案 1 :(得分:0)

JSON应该封装在{}

所以你的JSON应该是这样的:

{
    "order": {
        "currency": "eur",
        "order_items": [
            {
                "id": 3,
                "quantity": 1
            },
            {
                "id": 67,
                "quantity": 1
            }
        ]
    }
}

答案 2 :(得分:0)

正如Koen所说,你可以使用第一个属性创建一个对象,并在一次中对所有对象进行字符串化。

var myOrder = {
order: {
currency: 'eur',
         order_items: [
           {
             id: 3,
             quantity: 1
           },
           {
             id: 67,
             quantity: 1
           }
         ]
      }
}
console.log("currency : " + myOrder.order.currency);
for (var i in myOrder.order.order_items) {
    console.log("items number " + i);
    console.log("items id" + myOrder.order.order_items[i].id);
    console.log("items quantity" + myOrder.order.order_items[i].quantity);
}
var myString = JSON.stringify(myOrder);
console.log(myString);

但我认为你应该直接“命令”你的对象

此致