2012-01-11 17 views
0

私はJSONファイルの内容を理解しやすい方法で(非技術者向けに)表示する小さなユーティリティを構築しようとしました。Flash BuilderはローカルJSONファイルを読み込みません。 。

私はGoogledを広く、高く、低くしましたが、Flash BuilderでJSONファイルを使用する方法を示すすべての例では、Web上のファイルを指すHTTPサービスが使用されています。

ここで私は自分のMacBookの前に座って、なぜこの作業をすることができないのだろうと思っています。私は(この問題に関連し、一種の)発見した文書では、彼らは常に、Windowsの例を示し、彼らが正常に動作するように見える:

C://me/projects/json/my_json.json 

はおそらく、私は完全に明らかに欠けているが、これは上で可能ですMacも同様ですか?

私は動作しません

file:///Users/me/projects/json/my_json.json 

を試してみました。私はいくつかの "解決策"構文を試しましたが、HTTPサービスは引用符で囲まれたファイルパス以外のものを許可していないようです。

誰かが正しい方向に私をピンチできますか?

+0

AIRを使用していますか? – NoobsArePeople2

+0

はい。最後に私はそれがAIRアプリケーションになりたい。 –

答えて

1

File APIを使用してください。それは、ここで迅速なコードサンプルです本当に簡単です:

// Get a File reference, starting on the desktop. 
// If you have a specific file you want to open you could do this: 
// var file:File = File.desktopDirectory.resolvePath("myfile.json") 
// Then skip directly to readFile() 
var file:File = File.desktopDirectory; 

// Add a listener for when the user selects a file 
file.addEventListener(Event.SELECT, onSelect); 
// Add a listener for when the user cancels selecting a file 
file.addEventListener(Event.CANCEL, onCancel); 

// This will restrict the file open dialog such that you 
// can only open .json files 
var filter:FileFilter = new FileFilter("JSON Files", "*.json"); 

// Open the file browse dialog 
file.browseForOpen("Open a file", [filter]); 

// Select event handler 
private function onSelect(e:Event):void 
{ 
    // Remove listeners on e.currentTarget 
    // ... 

    // Cast to File 
    var selectedFile:File = e.currentTarget as File; 
    readFile(selectedFile); 
} 

private function onCancel(e:Event):void 
{ 
    // Remove listeners on e.currentTarget 
    // ... 
} 

private function readFile(file:File):void 
{ 
    // Read file 
    var fs:FileStream = new FileStream(); 
    fs.open(selectedFile, FileMode.READ); 
    var contents:String = fs.readUTFBytes(selectedFile.size); 
    fs.close() 

    // Parse your JSON for display or whatever you need it for 
    parseJSON(contents); 
} 

は、Windowsのためのもの例についてのあなたの記事でこれをほのめかして、あなたは、Mac上にあるが、私はここで明示的にそれを述べるだろう:あなたは常に使用する必要がありますFile APIはクロスプラットフォームなので、このコードは、WindowsとMacで同じように機能します。

関連する問題