2017-05-16 20 views
0

私のライブラリ用のCordova androidプラグインを開発しました。ライブラリは、接続されているさまざまなデバイス間でイベントを送信するために使用されます。JSONを正しく解析する方法は?

JSインタフェースは、Java側からJSONを受け取ります。私がしたいのは、アプリケーションに到達する前にこれを解析して、開発者がJSオブジェクトとして直接使用できるようにすることです。プラグインのJSインターフェイスでJSONを解析しようとしたときに、問題が発生しています。あなたが見ることができるように、このデータがアプリに到達している場合

Object {key: "name", data: "{"name":"neil","age":2,"address":"2 Hill St"}"} 
data:"{"name":"neil","age":2,"address":"2 Hill St"}" 
key:"name" 
__proto__:Object 

は、開発者がアクセス:JSインターフェイスで解析した後

{"key":"name","data":"{\"name\":\"neil\",\"age\":2,\"address\":\"2 Hill St\"}"} 

:JSのインタフェースで受信

:以下の例でありますデータ:

eventData.key = name; 
eventData.data = {"name":"neil","age":2,"address":"2 Hill St"}; 
eventData.data.name = undefined 

私のJSインタフェースで内部データを解析するにはどうすればよいのでしょうか? operは直接アクセスできます。上記の場合、彼はプロパティにアクセスするためにeventData.dataを解析する必要があります。私はこれが起こることを望んでいない、私はJSインターフェイス自体でこれをやりたい

eventDataには多くのプロパティがあり、アプリケーションに渡す前に適切に解析する必要があることに注意してください。

私はJavascriptを初めて使用しているため、この問題を理解することが困難です。

+2

'eventData.data = JSON.parse(eventData.data)' – Phil

+0

データプロパティには解析する文字列が含まれています – MFAL

+2

「JSインタフェースで受信」 - JSONが正しく受信されません(表現しようとしているデータに関して) - JSON –

答えて

0

返されたJSONにdataプロパティの文字列が含まれているようです。

var response = {"key":"name","data":"{\"name\":\"neil\",\"age\":2,\"address\":\"2 Hill St\"}"}; 
 
    //Parse the data 
 
    var jsonData = JSON.parse(response.data); 
 
    
 
    console.log(jsonData.name); //neil 
 
    console.log(jsonData.age); //2 
 
    console.log(jsonData.address);//"2 Hill St"

0

他の人が指摘したようにデータを文字列として来ると、あなたはJSON.parse(eventData.data)を行う必要があります。 あなたはそれがなぜ起こるのか見なければなりません。内部データは、フラットオブジェクトとしてデシベルでそれを格納するためにその有効ないくつかのケースでは、このように格納される可能性がありますか、誤って二回文字列化された:

var innerdata = JSON.stringify({ name: "neil" }); 
var eventData = JSON.stringify({ key: "name", data: innerdata }); 

は、あなたの受信文字列に対応することになります。最初の場所で文字列化する

正しい方法は次のようになります。

それはJSONオブジェクトを受信して​​いるように私には見えますJSのインタフェースで受信
var innerdata = { name: "neil" }; 
var eventData = JSON.stringify({ key: "name", data: innerdata }); 
関連する問題