ActionScript3上的JSON错误

ActionScript3上的JSON错误,json,actionscript-3,Json,Actionscript 3,我在Flash上有一个模拟移动应用程序的代码: package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.events.*; import flash.net.*; import com.adobe.serialization.json.*; public class ScreenCategories extends Sprite { private var last

我在Flash上有一个模拟移动应用程序的代码:

package  
{

import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.*;
import flash.net.*;
import com.adobe.serialization.json.*;

public class ScreenCategories extends Sprite 
{

    private var lastButtonEndedY:int;
    private var categories:Array;
    private var dataUrl:String = "getCategories.php";

    // Change this to false to use local static data instead;
    private var useRemoteData:Boolean = true;

    // Constructor: Create an array of three categories
    public function ScreenCategories()
    {
        lastButtonEndedY = 35;

        if ( useRemoteData )
        {
            loadCategories();
        }
    }

    public function loadCategories():void
     {
        var request:URLRequest = new URLRequest(dataUrl);
        var loader:URLLoader = new URLLoader();
        loader.dataFormat = URLLoaderDataFormat.TEXT;
        loader.addEventListener(Event.COMPLETE, categoryLoad_complete);
        loader.load(request);
     }

     private function categoryLoad_complete(evt:Event):void
     {
        var jsonText:String = evt.target.data;

        //Deserialize JSON
        categories = JSON.decode(jsonText) as Array;   
    }

    private function initializeCategory():void
    {
        // for each "category" in our list (Array)...
        for (var count in categories)
        {
            // Create a button for each of the categories that exist in our Array
            var aCategory:BtnCategory = new BtnCategory(categories[count].category);

            // Add the BtnCategory to the stage
            aCategory.x = 0;
            aCategory.y = lastButtonEndedY;
            aCategory.name = categories[count].id; // give it a unique name!
            addChild(aCategory);

            lastButtonEndedY += (aCategory.getHeight() + 1);
        }

        addEventListener(MouseEvent.CLICK, mouseClicked);
    }

    public function mouseClicked(e:MouseEvent)
    {
        removeEventListener(MouseEvent.CLICK, mouseClicked);

        // trace the name of the button that was pressed, in this case - the category number!
        var btnPressed:int = parseInt(e.target.name);

        // if the category exists in the Array (ie. not undefined), then display that category!
        if (categories[btnPressed] != undefined)
        {
            displayCategory(btnPressed)
        }

        addEventListener(MouseEvent.CLICK, mouseClicked);
    }

    // We want to go forward to see the list of products in this category, call back to Main.as so make that happen.
    public function displayCategory(categoryId)
    {
        trace ("display product category:" + categoryId);
        var par:* = parent;
        par.displayCategory(categoryId);
    }

}

}
但我得到以下错误:

**JSONParseError: Unexpected < encountered
    at com.adobe.serialization.json::JSONTokenizer/parseError()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONTokenizer.as:704]
    at com.adobe.serialization.json::JSONTokenizer/getNextToken()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONTokenizer.as:206]
    at com.adobe.serialization.json::JSONDecoder/nextToken()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONDecoder.as:102]
    at com.adobe.serialization.json::JSONDecoder()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONDecoder.as:71]
    at com.adobe.serialization.json::JSON$/decode()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSON.as:95]
    at ScreenCategories/categoryLoad_complete()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/ScreenCategories.as:45]
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at flash.net::URLLoader/onComplete()**
**JSONParseError:遇到意外的<
在com.adobe.serialization.json::JSONTokenizer/parseError()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONTokenizer.as:704]
在com.adobe.serialization.json::JSONTokenizer/getnextoken()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONTokenizer.as:206]
位于com.adobe.serialization.json::JSONDecoder/nextToken()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONDecoder.as:102]
位于com.adobe.serialization.json::JSONDecoder()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONDecoder.as:71]
在com.adobe.serialization.json::json$/decode()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/json.as:95]
在ScreenCategories/categoryLoad_complete()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/ScreenCategories.as:45]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
在flash.net::urloader/onComplete()中**

您可能从getCategories.php接收到无效的JSON

尝试在浏览器中运行getCategories.php脚本(通过在地址栏中粘贴(完整)URL)并将获得的JSON复制到验证器中。这会让你对任何无效的东西有一个清醒的认识


要了解有效JSON的定义,请签出

,但是当我在web上运行JSON时,它运行得很好,当我尝试运行swf@RominaMora“在web上运行我的JSON”到底是什么意思?@RominaMora脚本可以工作,它可以完美地运行,但这并不意味着它输出的JSON是有效的。在将生成的JSON传递给某个解析器之前,您必须特别注意它是否有效。我认为我首先发布的代码在调用JSON时有一些错误。作为“应用程序”类别屏幕的文件,您是对的,我使用了jsonlint,但它无效。我的JSON代码是