Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 926
user1399487 Avatar asked May 16 '12 19:05

user1399487


People also ask

How do you handle an apostrophe in JSON?

Insert JSON data into a table: To use an apostrophe or a single quotation mark (') in a value, add another single quotation mark after the first one.

What does u0027 mean?

U+0027 is Unicode for apostrophe (')

What is JSON serialization in C #?

The System. Text. Json namespace provides functionality for serializing to and deserializing from JavaScript Object Notation (JSON). Serialization is the process of converting the state of an object, that is, the values of its properties, into a form that can be stored or transmitted.


2 Answers

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.

like image 142
Andrew N Carr Avatar answered Sep 28 '22 09:09

Andrew N Carr


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.

like image 29
Padrus Avatar answered Sep 28 '22 08:09

Padrus