RestSharp and JSON.NET - Problem

Max1809Max1809 USMember ✭✭

I have a little problem with RestSharp and JSON.NET. It would be really nice, if somebody could help me. :-) Slowly I do not know anything more ...

Well, I have a REST-Service which accepts many POST-Variables and responds with a JSON-string.

With RestSharp I can build a successful request to my webserver and get the responded JSON-string.

The code for setting up the request looks like this:

    public string startRequest (string method, List<RESTServiceParameter> paramList)
            {
                // Request aufbauen
                var client = new RestClient (this.baseurl);

                var request = new RestRequest (method, Method.POST);
                request.AddHeader ("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");

                // Parameter zusammenbauen und an Request hängen ...
                for (int ii = 0; ii <= paramList.Count - 1; ii++) {
                    request.AddParameter (paramList [ii].Key, paramList [ii].Value);
                }

                IRestResponse response = client.Execute (request);

                return  response.Content;
            }

Unfortunately the result of "response.Content" has no umlauts which are very common in the german language. :(

For instance, the umlauts replaced by "\u00e4". This should be a "ä".

How can I active utf-8 encoding? I've set "charset=utf-8".

The other problem is about JSON.NET.

I cant deserialize the JSON-string to my Object.

The returned string looks like this:

[
{
"AGS":"99999999",
"ID":"31",
"Sichtbar":"1",
"ErstelltAm":"10.04.2014 11:36:20",
"Benutzer":"Max",
"Titel":"Chinesische Im- und Exporte im Abstieg",
"Bezeichnung":"Im- und Exporte \u00fcberraschend zur\u00fcckgegangen",
"Inhalt":"Die chinesischen Im- und Exporte sind im M\u00e4rz \u00fcberraschend zur\u00fcckgegangen. Der Gesamtwert der Ausfuhren lag im vergangenen Monat bei 170,1 Milliarden Dollar (123 Milliarden Euro) und damit 6,6 Prozent niedriger als im M\u00e4rz 2013, teilte die Zollverwaltung mit. Die Einfuhren gingen demnach noch st\u00e4rker zur\u00fcck, und zwar um 11,3 Prozent auf 162,4 Milliarden Dollar. \r\n\r\n",
"Thema":"Kultur",
"Einfuehrungstext":"Die chinesischen Im- und Exporte sind im M\u00e4rz \u00fcberraschend zur\u00fcckgegangen. Der Gesamtwert der Ausfuhren lag im vergangenen Monat bei 170,1 Milliarden Dollar (123 Milliarden Euro) und damit 6,6 Prozent niedriger als im M\u00e4rz 2013.",
"Bild1":"china_export.jpg",
"Bild2":"783px-AltMuseum_1a.jpg",
"Bild3":"800px-Audi-Sportpark.jpg",
"Bild4":"800px-Zugspitze_Westansicht.JPG"
},
{
"AGS":"99999999",
"ID":"41",
"Sichtbar":"1",
"ErstelltAm":"11.04.2014 13:04:23",
"Benutzer":"Max",
"Titel":"Fr\u00fchlingsmarkt am WE",
"Bezeichnung":"Fr\u00fchlingsmarkt am WE",
"Inhalt":"2014 wird der Stammhamer Fr\u00fchlingsmarkt den Vorjahren in nichts nachstehen: Ein buntes musikalisches Programm, ein actionreicher > Rummel und vielf\u00e4ltige gastronomische Versorgung \u2013 all das erwartet die kleinen und gro\u00dfen Besucher auch in diesem Jahr. ",
"Thema":"Kultur",
"Einfuehrungstext":"Alle B\u00fcrgerinnen und B\u00fcrger der Gemeinde sind herzlich eingeladen!",
"Bild1":"",
"Bild2":"",
"Bild3":"",
"Bild4":""
}
]

According to this website http://jsonformatter.curiousconcept.com/ the JSON-string is correct.

But I get a "Newtonsoft.Json.JsonReaderException" with the following text:
_
Unexpected character encountered while parsing value: . Path '', line 0, position 0._

What can I do? Is this the result of the wrong encoding?

EDIT

This is the stacktrace of the JSON-exception:

at Newtonsoft.Json.JsonTextReader.ParseValue () [0x00000] in :0
at Newtonsoft.Json.JsonTextReader.ReadInternal () [0x00000] in :0
at Newtonsoft.Json.JsonTextReader.Read () [0x00000] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType (Newtonsoft.Json.JsonReader reader, Newtonsoft.Json.Serialization.JsonContract contract, Boolean hasConverter) [0x00000] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType, Boolean checkAdditionalContent) [0x00000] in :0

And this is the code part, which deserialize the string:

List<dtoNachricht> liste = JsonConvert.DeserializeObject<List<dtoNachricht>> (response); // response is the returned 'response.content'

EDIT

Weird. Thats the only word I can say ...

When I use the following code, it works:

        string json = "[{ 'AGS':'99999999', 'ID':'31', 'Sichtbar':'1', 'ErstelltAm':'10.04.2014 11:36:20', 'Benutzer':'Max', 'Titel':'Chinesische Im- und Exporte im Abstieg', 'Bezeichnung':'Im- und Exporte \u00fcberraschend zur\u00fcckgegangen', 'Inhalt':'Die chinesischen Im- und Exporte sind im M\u00e4rz \u00fcberraschend zur\u00fcckgegangen. Der Gesamtwert der Ausfuhren lag im vergangenen Monat bei 170,1 Milliarden Dollar (123 Milliarden Euro) und damit 6,6 Prozent niedriger als im M\u00e4rz 2013, teilte die Zollverwaltung mit. Die Einfuhren gingen demnach noch st\u00e4rker zur\u00fcck, und zwar um 11,3 Prozent auf 162,4 Milliarden Dollar. \r\n\r\n', 'Thema':'Kultur', 'Einfuehrungstext':'Die chinesischen Im- und Exporte sind im M\u00e4rz \u00fcberraschend zur\u00fcckgegangen. Der Gesamtwert der Ausfuhren lag im vergangenen Monat bei 170,1 Milliarden Dollar (123 Milliarden Euro) und damit 6,6 Prozent niedriger als im M\u00e4rz 2013.', 'Bild1':'china_export.jpg', 'Bild2':'783px-AltMuseum_1a.jpg', 'Bild3':'800px-Audi-Sportpark.jpg', 'Bild4':'800px-Zugspitze_Westansicht.JPG' } ]";


        List<dtoNachricht> testlist = JsonConvert.DeserializeObject<List<dtoNachricht>>(json);

As you can see, the only thing I did, put the JSON-string as a "real" string in the code.

Also the encoding works with this test-code well. :)

Posts

  • Max1809Max1809 USMember ✭✭

    There is a problem with the returned JSON-string.

    I guess the encoding of the string is wrong and so the JSON.net deserializer cannot work.

    But I dont know why.

Sign In or Register to comment.