2016-12-09 5 views
0

を返す私は、私はUnexpected end of JSON inputを取得JSON.parseしようとするとJSON.parseJSON.parseがエラー

{"id":"2","name":"<small>L</small>(+)-Amethopterin Hydrate","class":"6.1","subclass":"","packing_group":"III","un":"2811","cas":"133073-73-1","poisons":"","hazardous":"Yes","restricted":"No","epa":"","added_by":"0","carcinogen":null}, 
{"id":"3","name":"(+)-Biotin 4-Nitrophenyl ester","class":"","subclass":"","packing_group":"","un":"","cas":"33755-53-2","poisons":"","hazardous":"No","restricted":"No","epa":"","added_by":"0","carcinogen":null}, 
{"id":"4","name":"(+)-Biotin N-hydroxysuccinimide ester","class":"","subclass":"","packing_group":"","un":"","cas":"35013-72-0","poisons":"","hazardous":"No","restricted":"No","epa":"","added_by":"0","carcinogen":null} 

を実行しようとする前に、これが私のJSON.stringify'dリターンです。 JSONオブジェクトとしてアクセスすることはできません。その理由は、can't define idなどと言えます。



JSON.parse(this.searchService.searchJson(this.php_url)); 

this.searchService.searchJson(this.php_url)私のJSON文字列が何であるかを基本的にあります。上記のようにエラーを出します。あなたがラップする必要があり

searchJson(url: any): any 
{ 
    let items: any = []; 
    let new_data: any = []; 
    $.getJSON(url , 
     function(data) 
     { 
      let temp_items: any = {}; 
      console.log(data); 
      $.each(data, function (key, val) 
      { 
       new_data.push(JSON.stringify(val)); 
      }); 
     }); 
    return new_data; 
} 
+1

マインド? – Ethan

+0

@ TheLazySlothそれを更新しました。返されるのは、基本的に文字列化されたものです。 –

+1

これはコンマで書かれた3つのオブジェクトです。配列などでなければなりません.. https://jsfiddle.net/c8743h70/ – echonax

答えて

2

:私はちょうど3つの要素の1を文字列化しようとした場合



また、それは私Unexpected token u in JSON at position 0



に呼び出す機能をあげます[]はオブジェクトの配列なので

です。あなたがこれを行うべきでJSON文字列としてあなたたくプロセス場合
const data = [{"id":"2","name":"<small>L</small>(+)-Amethopterin Hydrate","class":"6.1","subclass":"","packing_group":"III","un":"2811","cas":"133073-73-1","poisons":"","hazardous":"Yes","restricted":"No","epa":"","added_by":"0","carcinogen":null}, {"id":"3","name":"(+)-Biotin 4-Nitrophenyl ester","class":"","subclass":"","packing_group":"","un":"","cas":"33755-53-2","poisons":"","hazardous":"No","restricted":"No","epa":"","added_by":"0","carcinogen":null}, {"id":"4","name":"(+)-Biotin N-hydroxysuccinimide ester","class":"","subclass":"","packing_group":"","un":"","cas":"35013-72-0","poisons":"","hazardous":"No","restricted":"No","epa":"","added_by":"0","carcinogen":null}] 

console.log(data);[Object, Object, Object]

かを返します。

const data = '[{"id":"2","name":"<small>L</small>(+)-Amethopterin Hydrate","class":"6.1","subclass":"","packing_group":"III","un":"2811","cas":"133073-73-1","poisons":"","hazardous":"Yes","restricted":"No","epa":"","added_by":"0","carcinogen":null}, {"id":"3","name":"(+)-Biotin 4-Nitrophenyl ester","class":"","subclass":"","packing_group":"","un":"","cas":"33755-53-2","poisons":"","hazardous":"No","restricted":"No","epa":"","added_by":"0","carcinogen":null}, {"id":"4","name":"(+)-Biotin N-hydroxysuccinimide ester","class":"","subclass":"","packing_group":"","un":"","cas":"35013-72-0","poisons":"","hazardous":"No","restricted":"No","epa":"","added_by":"0","carcinogen":null}]' 

JSON.parse(data)[Object, Object, Object]

+0

'[Object {id =" 2 " 、...}、Object {id = "4"、...}] 'それでは、オブジェクト{id =" 3 "、name ="(+) - ビオチン4-ニトロフェニルエステル " JSON形式ですが、何らかの理由でアクセスできません。 –

1

これに呼び出し元の関数を変更返します。

searchAjax(url: any): any 
{ 
    let new_data: any; 
    return $.ajax({ 
     url: url, 
     type: 'post', 
     dataType: "json", 
     async: false 

    }).responseText; 
} 

おそらく原因は、私の変数が、私の変数が非同期のために呼び出された時点でヌルであったということでした。

1
file Nmae: self.json 
    [ 
      { 
      "id": "2", 
      "name": "<small>L</small>(+)-Amethopterin Hydrate", 
      "class": "6.1", 
      "subclass": "", 
      "packing_group": "III", 
      "un": "2811", 
      "cas": "133073-73-1", 
      "poisons": "", 
      "hazardous": "Yes", 
      "restricted": "No", 
      "epa": "", 
      "added_by": "0", 
      "carcinogen": null 
      }, 
      { 
      "id": "3", 
      "name": "(+)-Biotin 4-Nitrophenyl ester", 
      "class": "", 
      "subclass": "", 
      "packing_group": "", 
      "un": "", 
      "cas": "33755-53-2", 
      "poisons": "", 
      "hazardous": "No", 
      "restricted": "No", 
      "epa": "", 
      "added_by": "0", 
      "carcinogen": null 
      }, 
      { 
      "id": "4", 
      "name": "(+)-Biotin N-hydroxysuccinimide ester", 
      "class": "", 
      "subclass": "", 
      "packing_group": "", 
      "un": "", 
      "cas": "35013-72-0", 
      "poisons": "", 
      "hazardous": "No", 
      "restricted": "No", 
      "epa": "", 
      "added_by": "0", 
      "carcinogen": null 
      } 
     ] 
    $(document).ready(function($) { 
      $.ajax({ 
       url: 'self.json', 
       type: 'GET', 
       dataType: 'json', 
      }) 
      .done(function(respose) { 
       for (var i = 0; i < respose.length; i++) { 
        resText = respose[i].id+' '+respose[i].name+' '+ respose[i].class+' '+respose[i].subclass; 
        console.log(resText); 
       }; 
      }) 
      .fail(function() { 
       console.log("error"); 
      }) 
      .always(function() { 
       console.log("complete"); 
      }); 

     }); 

出力:私たちは、解析コードを示す enter image description here

+0

私はajaxを行っていたので、変数が表示されていたときに変数がnullだったことがわかります。\ –

+0

jQuery Ajaxを使用しています –

+0

ええ、私は答えました –