user1399487
user1399487

Reputation: 111

Encoding Apostrophe with JSON.NET

Say I have a class like

public class MyTestClass
{
    public MyTestClass()
    {
        Testing = "check ' out";
    }
    public string Testing { get; set; }
}

And JavascriptSerializer/JsonNet serializers like :

public IHtmlString ToJsonNet(object value)
{
    return new MvcHtmlString(JsonConvert.SerializeObject(value));
}

public IHtmlString ToJson(object value)
{
    var json = new JavaScriptSerializer();
    return new MvcHtmlString(json.Serialize(value));
}

Then in a view I have

 @(Serializers.ToJsonNet(new MyTestClass()))
 @(Serializers.ToJson(new MyTestClass()))

The JsonNet will return {"Testing":"check ' out"}, while the JavascriptSerializer will return {"Testing":"check \u0027 out"}. I wish to create a javascript object like

var model = $.parseJSON('@jsonString');

But this only works if the apostrophe is encoded. Otherwise, the apostrophe makes my javacript look like

var model = $.parseJSON('{"Testing":"check ' out"}');

which fails because the inserted apostrophe makes parseJSON escape my string too early.

JavascriptSerializer encodes the apostrophe as \u0027 by default while JSON.NET (which I want to use) does not. How can I change JSON.NET to do this? Is there a setting I'm missing? Is there a different way I can parse my JSON string into javascript where the apostrophe is OK?

Upvotes: 11

Views: 3833

Answers (3)

Entaah Laah
Entaah Laah

Reputation: 131

Try this:

{"Testing":"check \u0027 out"}

Upvotes: 1

Padrus
Padrus

Reputation: 2063

Have you tried escaping the apostrophe with a "\"?

Something like Testing = "check \' out";


You should also take a look at this post, there seem to be some interesting answers for you here.

Upvotes: 1

Andrew N Carr
Andrew N Carr

Reputation: 346

The following answer indicates that the two should be equivalent. https://stackoverflow.com/a/5022386/1388165

If it is the parseJSON call failing, perhaps double quotes instead of single quotes in the argument would help.

Upvotes: 1

Related Questions