2016-07-21 8 views
0

私はシンプルで大きな問題を抱えています。あなたが見ることができるようにストリンジェライズされたJsonがひじの入ったJsonの中に

{ 
    "responseCode":200, 
    "response":"{\"success\":true,\"results\":[{\"_id\":\"57907ca4dc2a4ff43c6d1300\",\"user_email\":\"[email protected]\",\"user_displayName\":\"auauau\",\"user_gender\":2,\"user_registerDate\":\"2016-07-21T07:41:24.748Z\",\"user_timezone\":\"-540\",\"__v\":0,\"updatedOn\":\"2016-07-22T02:20:44.624Z\"\,\"user_images\":{\"avatarSmall\":\"n/a\",\"avatarLarge\":\"n/a\",\"coverSmall\":\"n/a\",\"coverLarge\":\"n/a\"},\"user_birthDate\":{\"status\":false,\"dateAndTime\":\"1994-12-01T07:00:00.000Z\"}}]}", 
    "headers":{ 
    } 
} 

は、私が得たJSONは間違いなくJSONです:

私が得た答えJSONは次のようなものです。

ただし、内部myJson.responseはJSONではありません。

私が試した:

var inner = myJson.response; 
console.log("inner Json =", inner);     //====1 
console.log("inner Json =", JSON.stringify(inner)); //====2 
inner = JSON.parse(inner); 
console.log("inner Json =", inner);     //====3 
console.log("inner Json =", JSON.stringify(inner)); //====4 

をそれらのどちらもが使用可能であるにもJSONです。

環境は次のとおりです。

  • サーバー:NodeJS

  • フレームワーク:Angularjs

  • フロントエンド:イオン

私は$を使用してファイルを転送cordovaTransferFile $ hでないのでttpなので、$ httpParamSerializerまたは$ httpProviderを使用するポイントはありません。

myJson.response内のデータを使用可能なJSONに変更するにはどうすればよいですか?

編集済み:申し訳ありませんが、JSONは実際のデータではありません。構文エラーが私によって生成されるように私はそれを編集する前に編集しました。 私は実際のデータのようなものに変更し、構文をチェックしました。 nodeJSを使用してJSONを生成するので、JSONに構文エラーがないはずです。

答えて

2

あなたがここに構文エラーがあります。"{\"success\":true,\"results\":[{\"_id\":\"123123123\",\"email\":\"abcdgmail.com\",\"name\":\"Sixty\",\"data\":[{\"subname\":\"subname2\",\"subDate\":\"01011990\"}]]

データは、単一のオブジェクトの配列です:{\"subname\":\"subname2\",\"subDate\":\"01011990\"}

、その後、データはあなたがクローズされていない別のオブジェクト内にある: {\"_id\":\"123123123\",\"email\":\"abcdgmail.com\",\"name\":\"Sixty\",\"data\":[{\"subname\":\"subname2\",\"subDate\":\"01011990\"}]

あなたは2つの]が一緒です。新しいJSONで

var json = { 
    "responseCode":200, 
    "response":"{\"success\":true,\"results\":[{\"_id\":\"123123123\",\"email\":\"abcdgmail.com\",\"name\":\"Sixty\",\"data\":[{\"subname\":\"subname2\",\"subDate\":\"01011990\"}]}]}", 
    "headers":{ 
     } 
}; 
var response = JSON.parse(json.response); 
console.log(response); 

EDIT2

var json = { 
    "responseCode":200, 
    "response":"{\"success\":true,\"results\":[{\"_id\":\"57907ca4dc2a4ff43c6d1300\",\"user_email\":\"[email protected]\",\"user_displayName\":\"auauau\",\"user_gender\":2,\"user_registerDate\":\"2016-07-21T07:41:24.748Z\",\"user_timezone\":\"-540\",\"__v\":0,\"updatedOn\":\"2016-07-22T02:20:44.624Z\"\,\"user_images\":{\"avatarSmall\":\"n/a\",\"avatarLarge\":\"n/a\",\"coverSmall\":\"n/a\",\"coverLarge\":\"n/a\"},\"user_birthDate\":{\"status\":false,\"dateAndTime\":\"1994-12-01T07:00:00.000Z\"}}]}", 
    "headers":{ 
    } 
} 
json.response = JSON.parse(json.response); 
console.log(json); 

あなたは今、JSONオブジェクトとしてjson.response使用することができます上記のコードでは

EDIT は、それがされる修正しました。

+0

うん、結果のいずれかを、以下の

チェックが閉じていません。 –

+1

文法の間違いをおかけして申し訳ありません。しかし、もう一度見てもらえますか?ご回答どうもありがとうございました。 –

1

myJson.responseオブジェクトに構文エラーがあるため、JSON.parseが機能しません。

{ 
"success": true, 
"results": [ 
       { 
        "_id": "123123123", 
        "email": "abcdgmail.com", 
        "name": "Sixty", 
        "data": [ 
           { 
           "subname": "subname2", 
           "subDate": "01011990" 
           } 
          ] 
       }// this is missing in your object 
      ] 
} 
+0

私はチェックして、それは私の間違いであることが分かった。申し訳ありませんが、もう一度見てもらえますか?あなたの答えをありがとう。 –

+0

あなたはそれがまだ動作していないという意味ですか?構文エラーが解決した後に? –

+0

はい、構文エラーは私の間違いです。 編集:内部を取得してからJSON.parse(内部)を取得しようとしました。しかし、外側の{}はinnerJsonをオブジェクトとして動作させるため、解析できません。 –

関連する問題