0

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

我想要一个像下面这样的 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 结构的组合方式,我有什么遗漏吗?

非常感谢你。

4

3 回答 3

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"}]
    }
}​
于 2012-11-20T10:04:38.370 回答
0

JSON 应该封装在{和中}

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

{
    "order": {
        "currency": "eur",
        "order_items": [
            {
                "id": 3,
                "quantity": 1
            },
            {
                "id": 67,
                "quantity": 1
            }
        ]
    }
}
于 2012-11-20T10:00:32.260 回答
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);

但我认为你应该直接“订购”你的对象

问候,

于 2012-11-20T10:19:56.500 回答