2017-08-05 3 views
-1

JSONオブジェクトが渡された場合にのみ機能する関数があります。 JSONと同じ形式の文字列を渡すと、うまくいきません。だから私は、その関数に、渡された文字列がJSONであると考えるようにしたい。文字列は実際にはJSON形式です。JavaScriptで文字列がJSONと考える方法を教えてください。

また、次のように試しました。私は文字列をAjaxで "handle as"パラメータを "JSON"として入力し、その結果を関数に渡すと関数が動作します。

私はこの問題が文字列ではないことを推測しました。この文字列をJSONに変換するにはどうすればよいですか?私は、AJAXの要求を介して同じ文字列を取得し、関数の作品に渡す場合は、それを直接渡すことはありませんが動作しません。コンソールログの

スクリーンショット: enter image description here

アドバンスのおかげ

+5

[JSONオブジェクトに文字列を変換]の可能な重複(https://stackoverflow.com/questions/10976897/converting-a-string-to-json -object) – Nisarg

+0

パス文字列をjsonに解析すると、この文字列がこの質問を参照します。https://stackoverflow.com/questions/18745406/how-to-check-if-its-a-string-or-json – Araf

+0

'私は問題は文字列ではない ' - あなたは間違っているでしょう。文字列が* image *に' json1'として表示されているものであれば、それはまったくJSONではありません。 **正確な文字列 –

答えて

-1

JavaScriptは動的型付け言語であるので、あなたは本当にフロントアップ関数の引数の型を指定することはできません。あなたがそれを望むなら、TypeScriptを見てください。

JSONは文字列であり、JavaScriptのスタンドアロンタイプではありません。同等のJSON文字列表現を使用するJavaScriptオブジェクトを変換するには:

const myJSON = JSON.stringify ({ a: 'b' }) 

をバックJSON文字列の使用からJavaScriptオブジェクトを取得するには:

JSON.parse (myJSON) 

は、ネットワークを介して行く、ライブラリが自動的にシリアライズさ返すことができますタイプをJSONとして指定した場合はオブジェクトになります。あなたはコードを貼り付けていないので、application/jsonをネットワーク要求のContent-Typeと指定していないと推測しています。あなたの質問jQueryにタグをつけたので、[$.getJSON][2]を見てください。これはあなたが望むことをするはずです。

-2

使用JSON.parse

function isJson(str) { 
    try { 
     JSON.parse(str); 
    } catch (e) { 
     return false; 
    } 
    return true; 
} 

例:

function isJson(str) { 
 
    try { 
 
     JSON.parse(str); 
 
    } catch (e) { 
 
     return false; 
 
    } 
 
    return true; 
 
} 
 

 
str = '{"a":1, "b":2}'; 
 
console.log(isJson(str)); // true 
 

 
str1 = '{["a":1, "b":2]}'; 
 
console.log(isJson(str1)); // false

関連する問題