2016-08-01 14 views
0

Ist es möglich, Daten in einer Variablen als String oder JSON-Objekt zu überprüfen?Wie überprüft man, ob eine Variable ein JSON-Objekt oder eine Zeichenfolge enthält?

var json_string = '{ "key": 1, "key2": "2" }'; 

var json_string = { "key": 1, "key2": "2" }; 

var json_string = "{ 'key': 1, 'key2', 2 }"; 

Wenn json_string.key2 2 oder wenn undefined zurückgeben.

Wann müssen wir JSON.parse verwenden?

Wie überprüfe ich, welche Zeichenfolge oder JSON-Objekt ist.

+1

'typeof json_string'. –

+0

Mögliches Duplikat von [Wie kann ich prüfen, ob eine Variable in JavaScript eine Zeichenfolge ist?] (Http://stackoverflow.com/questions/6286542/how-can-i-check-if-a-var-is-a- string-in-javascript) – eclarkso

Antwort

2

weil Ihr 3. json_string ungültig ist, Sie müssen auch auf Fehler überprüfen:

function checkJSON(json) { 
if (typeof json == 'object') 
    return 'object'; 
try { 
    return (typeof JSON.parse(json)); 
} 
catch(e) { 
    return 'string'; 
} 
} 

var json_string = '{ "key": 1, "key2": "2" }'; 
console.log(checkJSON(json_string)); //object 

json_string = { "key": 1, "key2": "2" }; 
console.log(checkJSON(json_string)); //object 

json_string = "{ 'key': 1, 'key2', 2 }"; 
console.log(checkJSON(json_string)); //string 
2

try this:

if(typeof json_string == "string"){ 
    json = JSON.parse(json_string); 
} 
+0

es wird nur eine Zeichenkette prüfen oder nicht, aber JSON wird nicht geprüft. –

+0

das wäre 'typeof json_string ==" object "' – stackoverfloweth

0

ist es nicht wirklich so etwas wie eine 'JSON-Objekt'. Sobald eine JSON-Zeichenfolge erfolgreich decodiert wurde, wird sie einfach zu einem Objekt oder einem Array oder einem Primitiv (String, Nummer usw.).

aber Sie wahrscheinlich wissen wollen, ob ein String ein gültiger JSON-String ist:

var string1 = '{ "key": 1, "key2": "2" }'; 
 
var string2 = 'Hello World!'; 
 
var object = { "key": 1, "key2": "2" }; 
 
var number = 123; 
 

 
function test(data) { 
 
    switch(typeof data) { 
 
    case 'string': 
 
     try { 
 
     JSON.parse(data); 
 
     } catch (e) { 
 
     return "This is a string"; 
 
     } 
 
     return "This is a JSON string"; 
 

 
    case 'object': 
 
     return "This is an object"; 
 
     
 
    default: 
 
     return "This is something else"; 
 
    } 
 
} 
 

 
console.log(test(string1)); 
 
console.log(test(string2)); 
 
console.log(test(object)); 
 
console.log(test(number));

0

Variablentyp zu überprüfen, können Sie typeof-Operator

verwenden und zum Umwandeln ein gültiges mit String versehenes Json-Objekt, können Sie folgende Funktion verwenden

Wenn eine Variable Objekt ist dann es macht nichts und gibt dasselbe Objekt zurück.

Wenn es sich jedoch um eine Zeichenfolge handelt, wird versucht, sie in ein Objekt zu konvertieren, und sie wird zurückgegeben.

function getJSON(d) { 
 
    var jsonObject; 
 
    jsonObject = d; 
 
    if (typeof d === 'string') { 
 
     try { 
 
     jsonObject = JSON.parse(d); 
 
     } catch (Ex) { 
 
     jsonObject = undefined; 
 
     console.log("d " ,d, 'Error in parsing', Ex); 
 
     } 
 
    } 
 
    return jsonObject; 
 
    }; 
 
    var obj = {a:2, b:3}; 
 
    var stringified_obj = JSON.stringify(obj); 
 
    console.log(obj); 
 
    console.log(getJSON(stringified_obj));

Verwandte Themen