首页 > 解决方案 > NewtonSoft.Json Error while deserializing object to dynamic

问题描述

I get deserialisation errors, but only on Testserver. The same code on Productive server works.

The following errors occurs: {"Unexpected character encountered while parsing value: . Path '', line 0, position 0."}

This is the received json string, which i get from webservice.

{"success":true,"responses":[{"statusCode":0,"responseMessage":"Der Datensatz wurde erfolgreich unter dem Bookmark BD2797BB4D283AF2 gespeichert"},{"statusCode":0,"responseMessage":"Der Datensatz wurde erfolgreich unter dem Bookmark 05206DB94D283AF2 gespeichert"},{"statusCode":0,"responseMessage":"Der Datensatz wurde erfolgreich unter dem Bookmark 900349C04D283AF2 gespeichert"},{"statusCode":0,"responseMessage":"Der Datensatz wurde erfolgreich unter dem Bookmark ED492DC74D283AF2 gespeichert"}]}

Some days before, it runs also on testserver, but i don^t know where the bug can be.

Call of Webservice:

var errorPositions = new List<SalesConditionErrorMesageDTO>();
        string response = "";
        var settings = JsonSetting.DefaultSerializerSettings; 
        string jsonDataString = JsonConvert.SerializeObject(
            new DataSend()
            {
                Conditions = salesConditions
            }, settings
        );

        HttpWebRequest request = CreatePostRequest(ServerConfiguration.ConditionsWrite, jsonDataString.Length);
        request.Timeout = 7200000; //120 Minutes
        Logger.Log("Save Conditions on:" + Environment.NewLine
            + request.RequestUri + Environment.NewLine
            + jsonDataString, LogSeverity.Information);

        using (Stream webStream = request.GetRequestStream())
        using (StreamWriter requestWriter = new StreamWriter(webStream, Encoding.ASCII))
        {
            requestWriter.Write(jsonDataString);
        }


            using (WebResponse webResponse = request.GetResponse())
            using (Stream webStream = webResponse.GetResponseStream())
            {
                if (webStream != null) 
                {
                    using (StreamReader responseReader = new StreamReader(webStream))
                    {
                        response = responseReader.ReadToEnd();

                        var responseJson = JsonConvert.DeserializeObject<dynamic>(response);

                        if ((bool)responseJson.success)
                        {
                            foreach (dynamic responsePart in responseJson.responses)
                            {
                                if ((int)responsePart.statusCode == 2)
                                {
                                    var errorPosition = new SalesConditionErrorMesageDTO(0, 0, responsePart.responseMessage);
                                }
                            }
                        }


                    }
                }
                else
                {
                    throw new NullReferenceException("WebResponse.GetResponseStream() returned no WebStream object, so this is NULL.");
                }
            }

标签: json.netdeserialization

解决方案


推荐阅读