2016-04-22 14 views
-4

Ich möchte alle Zeichenfolgenwerte in der unteren JSON-Zeichenfolge zu leeren String, True zu False und 1 zu 0 in einem Array (eckige Klammern) mit JavaScript ersetzen.Ersetzen Sie Werte in einer Zeichenfolge mit JavaScript

Zusatzinformationen: JSON-Zeichenfolge wird in eine Zeichenfolgevariable eingefügt.

HINWEIS: Eigenschaften sind dynamisch. Bedeutung manchmal könnte ich MobilePhone haben und es wird einen Fall geben, dass diese Eigenschaft fehlt. Daher ist es nicht möglich, auf den Namen der Eigenschaft zu verweisen.

Meine JSON-String:

{"MobilePhone":true,"ToDeleteIndex":1,"BusinessPhone":true,"ApplicantType":"HOLDER","Title":"Mr","FirstName":"Andrew","RemoveApplicant":[1,null]} 

Erwartete Ergebnisse:

{"MobilePhone":false,"ToDeleteIndex":1,"BusinessPhone":false,"ApplicantType":"","Title":"","FirstName":"","RemoveApplicant":[0,null]} 
+2

Warum Sie nicht verwenden 'JSON.parse()' wandeln es in ein Objekt, und dann die Werte verarbeiten direkt statt Ersetzen sie in der Zeichenfolge? – Barmar

+0

@Barmar dann, was ist der nächste Schritt, um die Werte zu setzen, da ich nicht weiß, welche Eigenschaften weitergegeben werden? – Ahmad

Antwort

-1

Versuchen Sie, diese DEMO

var data = JSON.parse('{"MobilePhone":true,"ToDeleteIndex":1,"BusinessPhone":true,"ApplicantType":"HOLDER","Title":"Mr","FirstName":"Andrew","RemoveApplicant":[1,null]}'); 
 

 
for (prop in data) { 
 
    if (data[prop] === true) { 
 
    data[prop] = false; 
 
    } else if (typeof data[prop] == 'string') { 
 
    data[prop] = ''; 
 
    } else if (Array.isArray(data[prop])) { 
 
    data[prop] = data[prop].map(function(el) { return (el == 1) ? el = 0 : el}); 
 
    } 
 
} 
 

 
document.write(JSON.stringify(data));

+0

Zuerst müssen Sie 'data = JSON.parse (string);'. – Barmar

+0

Sie wollen wahrscheinlich ein Triple gleich Vergleich zu wahren. Noch sollten Sie Ihre Lösung an das erste Element des Arrays fest verdrahten. –

+0

@torazaburo aktualisiert meine Antwort. –

-1

Sie können die string Replace() Funktion in Javascript verwenden.

Wenn Ihr Json in einer String-Variablen ist, dann tun Sie etwas wie dieses;

var str = "{'MobilePhone':true,'ToDeleteIndex':1}";//your json as string 
var res = str.replace(new RegExp("true", 'g'), "false"); //replace true to false 
var res = res.replace(new RegExp("1", 'g'), "0"); //replace 1 to 0 
Console.Log(res); //{'MobilePhone':false,'ToDeleteIndex':0} 

Seien Sie jedoch vorsichtig, da dieser Code alle Vorkommen von true mit false und 1 mit 0, unabhängig von ihrem Standort in der Zeichenfolge ersetzt.

+1

'str.replace()' ersetzt nur das erste Vorkommen, es sei denn, Sie verwenden einen regulären Ausdruck mit dem Modifikator 'g'. – Barmar

+0

Und das Ersetzen von "1" durch "0" ändert auch "11" in "00". – Barmar

+0

Wo ersetzen Sie alle Zeichenfolgenwerte durch eine leere Zeichenfolge? – Barmar

0

nach JSON.parse, versuchen Sie dies:

const data = { 
 
    "MobilePhone": true, 
 
    "ToDeleteIndex": 1, 
 
    "BusinessPhone": true, 
 
    "ApplicantType": "HOLDER", 
 
    "Title": "Mr", 
 
    "FirstName": "Andrew", 
 
    "RemoveApplicant": [1, null] 
 
    } 
 
    //string to empty string, true to false, and 1 to 0 (in array) 
 
trans = { 
 
    string: function(x) {return x= ''}, 
 
    boolean: function(x) { 
 
    if (x) 
 
     x = false; 
 
    return x; 
 
    }, 
 
    object: function(x) { 
 
    if (Array.isArray(x)) 
 
     x.map(function(z) { if (z === 1) z = 0; return z}); 
 
    return x; 
 
    } 
 
} 
 

 
const r = Object.keys(data).map(function(x) { 
 
    const val = trans[typeof(data[x])] ? trans[typeof(data[x])](data[x]) : data[x]; 
 
    return {[x]: val}; 
 
}) 
 
console.log(r)

+0

Ich habe den Fehler "unknown identifier" für das Komma erhalten -> string: (x) => '', – Ahmad

+0

@Ahmad on chrome v49 Ich erhalte keine Fehler, welchen Browser benutzen Sie? Anyway '(x) => '' 'ist eine es6 Pfeilfunktionssyntax, Sie können sie durch' function (x) {return x =' '; } ', Ich werde meine Antwort aktualisieren. – maioman

Verwandte Themen