0

我有一个 Flash 应用程序,在一个函数中,我必须解析一个 json,该 json 像一个对象一样由一些我无法更改的外部 API 传递。

我的 json 看起来像这样:

 {
    "prodotti": [
        {
            "titolo": "test",
            "marca": "",
            "modello": "",
            "cilindrata": "",
            "potenza": "",
            "alimentazione": "",
            "images": {
                "img": [
                    {
                        "thumb": "admin/uploads/img_usato/small/qekabw95L5WH1ALf6.jpg",
                        "big": "admin/uploads/img_usato/big/qekabw95L5WH1ALf6.jpg"
                    },
                    {
                        "thumb": "admin/uploads/img_usato/small/default.jpg",
                        "big": "admin/uploads/img_usato/big/default.jpg"
                    }
                ]
            }
        },
        {
            "titolo": "Motore Volvo TAMD 74 C",
            "marca": "VOLVO PENTA",
            "modello": "TAMD 74 C",
            "cilindrata": "7.283 cm3",
            "potenza": "331 kW a 2600 rpm",
            "alimentazione": "Gasolio",
            "images": {
                "img": [
                    {
                        "thumb": "admin/uploads/img_usato/small/PmQwN4t4yp7P1YCWa.jpg",
                        "big": "admin/uploads/img_usato/big/PmQwN4t4yp7P1YCWa.jpg"
                    },
                    {
                        "thumb": "admin/uploads/img_usato/small/BWkjTGcy3pDM2LKRs.jpg",
                        "big": "admin/uploads/img_usato/big/BWkjTGcy3pDM2LKRs.jpg"
                    }
                ]
            }
        }
    ]
}

我想解析对象内的图像。API 向我发送一个不是字符串或 json 的对象,我现在有这个功能:

function changeData (prodotto:Object) {
    img_container.graphics.clear ();

        //here I want to enter and take thumb and big of images!!!
    for (var index in prodotto.images.img) {
        //trace('index: ' + index);
        //trace("thumb: " + index.thumb + ' big: ' + index.big);
    }

        descrizione.htmlText = prodotto.testo_html;
        titolo.text = prodotto.titolo;
        alimentazione.text = prodotto.alimentazione;
        potenza.text = prodotto.potenza;
        cilindrata.text = prodotto.cilindrata;
        modello.text = prodotto.modello;
        marca.text = prodotto.marca;

}

该函数工作正常,但不适用于我尝试获取我的 json 的错误和拇指的 for 循环如何在该对象中检索此信息?

谢谢

4

2 回答 2

0

我认为您设置回调的方式有问题,但由于您没有显示 api 的代码,我们无法解决这个问题,而且您说您无法控制它。不管问题是什么,它似乎都不正确。

我整理了一个函数,可以得到所有的大拇指和大拇指。你没有另外声明。

function changeData (prodotto:Object) {
    for each(var item in prodotto.prodotti){
        trace('')
        //trace(prodotto.testo_html);
        trace(item.titolo);
        trace(item.alimentazione);
        trace(item.potenza);
        trace(item.cilindrata);
        trace(item.modello);
        trace(item.marca);
        for each( var imgs in item.images.img) {
            trace('thumb',imgs.thumb)
            trace('big',imgs.big)
        }
    }
}
于 2013-08-26T22:03:28.133 回答
0

我认为您需要使用 JSON 解析器。使用此链接中的一个:https ://github.com/mikechambers/as3corelib

1:将文件夹添加com到您的项目目录将其添加到您的默认类路径。

2:根据您的喜好调整此代码。我不确定您如何从 API 获取文字对象。除非您使用某种 AMF,否则它实际上应该只是一个字符串。不管...

import com.adobe.serialization.json.*;
var data:String = '{"prodotti":[{"titolo":"test","marca":"","modello":"","cilindrata":"","potenza":"","alimentazione":"","images":{"img":[{"thumb":"admin/uploads/img_usato/small/qekabw95L5WH1ALf6.jpg","big":"admin/uploads/img_usato/big/qekabw95L5WH1ALf6.jpg"},{"thumb":"admin/uploads/img_usato/small/default.jpg","big":"admin/uploads/img_usato/big/default.jpg"}]}},{"titolo":"Motore Volvo TAMD 74 C","marca":"VOLVO PENTA","modello":"TAMD 74 C","cilindrata":"7.283 cm3","potenza":"331 kW a 2600 rpm","alimentazione":"Gasolio","images":{"img":[{"thumb":"admin/uploads/img_usato/small/PmQwN4t4yp7P1YCWa.jpg","big":"admin/uploads/img_usato/big/PmQwN4t4yp7P1YCWa.jpg"},{"thumb":"admin/uploads/img_usato/small/BWkjTGcy3pDM2LKRs.jpg","big":"admin/uploads/img_usato/big/BWkjTGcy3pDM2LKRs.jpg"}]}}]}';

function changeData(data)
{
    img_container.graphics.clear();
    var obj = JSON.decode(data);

    for (var i:int = 0; i < obj.prodotti.length; i++)
    {
        for (var k in obj.prodotti[i].images.img)
        {
            trace("Thumb:",obj.prodotti[i].images.img[k].thumb);
            trace("Big:",obj.prodotti[i].images.img[k].big);
        }
        descrizione.htmlText    = obj.prodotti[i].testo_html;
        titolo.text             = obj.prodotti[i].titolo;
        alimentazione.text      = obj.prodotti[i].alimentazione;
        potenza.text            = obj.prodotti[i].potenza;
        cilindrata.text         = obj.prodotti[i].cilindrata;
        modello.text            = obj.prodotti[i].modello;
        marca.text              = obj.prodotti[i].marca;
    }
}
changeData(data);
于 2013-08-26T19:12:51.930 回答