如何解析此 JSON 数据并获取我想要的属性列表?

How do I parse this JSON data and get the attributes I want as a list?

我正在构建一个 air 应用程序,它需要使用 REST API 从 Firebase 数据库访问数据。我能够获取数据,但我不知道如何从该数据中获取我需要的信息。

基本上,我有一个 Android 应用程序和一个桌面应用程序。 android 应用程序 uploads/Modifies 数据和桌面应用程序需要访问该数据并通过套接字连接向 ESP8266 发送信号。我有一个 'Lights' 每个灯的列表,作为 'lightname'、'status' 和 'pin'。我希望能够遍历所有 'pin'。

当我尝试获取数据时,我得到了这个 JSON:

{"-LAb_YKS9l7qQno25AY5":{"lightname":"light1","pin":"14","status":"on","timestamp":1524303808146},"-LAb_cRpsGpQfr7JbCfI":{"lightname":"light2","pin":"15","status":"on","timestamp":1524303830159},"-LAb_zbf2sYuyTtW_uEr":{"lightname":"blah","pin":"9","status":"on","timestamp":1524303921921},"-LAba68lzyG15n6anuSF":{"lightname":"dishl","pin":"7","status":"on","timestamp":1524303955946},"-LAdZW2JjQVGfLMc_sb4":{"lightname":"cxcxc","pin":"14","status":"on","timestamp":1524337092712}}

我想遍历所有灯并访问它们的 'pin' 值。 这是我尝试过的:

for (var i:int = 0; i < e.target.data.length; i++)
        {
            trace(e.target.data[i]["status"]);
        }

我收到这个错误:

Property 0 not found on String and there is no default value.

非常感谢任何帮助。

因为您从 Firebase 得到的 e.target.data 答案是 String 并且首先您需要 JSON.parse(...) 将其转换为数据。那么你的数据不是A​​rray,而是Object。你循环遍历它如下:

// Parse the incoming data.
var aData:Object = JSON.parse(e.target.data);

// Loop through string keys of the data object.
for (var aKey:String in aData)
{
    trace("");
    trace(aKey);

    // Assign entry reference to another local variable. This is not 
    // mandatory, but the following code is shorter and thus more readable.
    var anEntry:Object = aData[aKey];

    trace(anEntry['pin']);
    trace(anEntry['status']);
    trace(anEntry['lightname']);
}

如果您没有使用键值,您可以使用稍微不同的方法:

// Parse the incoming data.
var aData:Object = JSON.parse(e.target.data);

// Loop through values of the data object while ignoring the keys.
for each (var anEntry:Object in aData)
{
    trace("");

    trace(anEntry['pin']);
    trace(anEntry['status']);
    trace(anEntry['lightname']);
}