2

How to replace all " " siblings from JSON string?

{
  "Cat": "laps milk",
  "Dog": "Woofs at Postman",
  "Bird": "Jumps over the river",
  "I": "Want to learn Regexp"
}

And btw, advice me please some good article or book from where I could finally learn Regexp :(

4 Answers 4

5

If you're parsing the JSON string, you can also use the reviver parameter of JSON.parse(string, [reviver]):

var jsonStr = '{"Cat":"laps milk","Dog":"Woofs at Postman","Bird":"Jumps over the river","I":"Want to learn Regexp"}';
var result = JSON.parse(jsonStr, function (key, value) {
    return value.replace(/ /g, " ");
});

Likewise, the stringify method allows a replacer function which will replace any values when converting to a JSON string:

var obj = {"Cat":"laps milk","Dog":"Woofs at Postman","Bird":"Jumps over the river","I":"Want to learn Regexp"};
var result = JSON.stringify(obj, function (key, value) {
    return value.replace(/ /g, " ");
});

Of course, this is assuming you're using json2.js or a browser with the correct ECMAScript 5th Edition implementation of the JSON object.

Sign up to request clarification or add additional context in comments.

5 Comments

@moogeek: JSON.decode isn't as good as the ECMA 5 implementation, and it doesn't have a reviver function - something which is especially useful for things like parsing date strings :-) Also, the json2.js link I posted gracefully checks if native support is already available from the browser, which would provide much faster parsing.
but in Mootools JSON.decode/JSON.encode is crossbrowser solution and native ECMA way mostly supported only by Gecko/Webkit
@moogeek: Native JSON is also supported in IE8 and all implementations are the same. The point of json2.js is to provide the equivalent of the native object if it doesn't exist, making it as much of a cross browser solution as Mootools JSON, with the added benefits of additional parsing/stringifying arguments and when native is available performance will be better.
That being said, if you're already using Mootools, you might as well use the JSON implementation if you're happy with it.
You saved my day, man, even after almost 11 years XD no other solution seemed to work
3
var json = { "Cat"  : "laps_ milk",
             "Dog"  : "Woofs_ at_ Postman",
             "Bird" : "Jumps_ over_ the_ river",
             "I"    : "Want_ to_ learn_ Regexp" };
for (var prop in json) {
    json[prop] = json[prop].replace(/_/gi, '');
}

Regular Expressions is a good place to learn regexes.

Comments

1

Try this:

var obj = {"Cat":"laps milk","Dog":"Woofs at Postman","Bird":"Jumps over the river","I":"Want to learn Regexp"};
for(var key in obj) {
    obj[key] = obj[key].replace(' ', '');
}

Also, the place that has helped me most in learning regular expressions:

Comments

0

In Mootools: console.log(JSON.encode(mystring).replace(/ /gi, ' '));

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.