API REST Python Hug используется в .NET, JSON выглядит странно - PullRequest
0 голосов
/ 09 мая 2019

При использовании конечной точки Hug REST из .net JSON есть встроенные символы.Полный неудачный пример размещен ниже.Любая помощь очень ценится.

Python

@hug.post('/test')
def test(response, body=None):
    input = body.get('input')
    print('INSIDE TEST ' + input)

    if input:
        dict = {"lastname":"Jordan"}
        dict["firstname"] = input
        return json.dumps(dict, sort_keys=True, default=str)

.NET (можно использовать только .net 3.5)

private static object GetParsedData(string data)
{
    var posturl = "http://localhost:8000/test"; 
    try
    {
        using (var client = new WebClient())
        {
            // upload values is the POST verb
            var values = new NameValueCollection()
                         {
                             { "input", data },
                         };
            var response = client.UploadValues(posturl, values);
            var responseString = Encoding.UTF8.GetString(response);
            var settings = new JsonSerializerSettings
                           {
                               NullValueHandling = NullValueHandling.Ignore,
                               MissingMemberHandling = MissingMemberHandling.Ignore
                           };
            JObject rss = JObject.Parse(responseString);
            Console.WriteLine((string)rss["lastname"]);
        }
    }
    catch (WebException ex)
    {
        if (ex.Response is HttpWebResponse)
        {
            var code = ((HttpWebResponse)ex.Response).StatusCode;
            var desc = ((HttpWebResponse)ex.Response).StatusDescription;
        }
        //_logger.Error(ex.Message);
    }
    return false;
}

responseString выглядит следующим образом:

"\"{\\\"firstname\\\": \\\"Mike\\\", \\\"lastname\\\": \\\"Jordan\\\"}\""

JObject.Parse выдает ошибку:

Newtonsoft.Json.JsonReaderException: 
'Error reading JObject from JsonReader. Current JsonReader item is not an object: String. Path '', line 1, position 53.

Обходной путь - если я сделаю что-то ужасное с этим, то responseString JObject правильно проанализирует:

str = str.Replace("\\", "");
str = str.Substring(1, len - 2);

Что происходит?

1 Ответ

1 голос
/ 09 мая 2019

Формат hug по умолчанию - json; нет необходимости вызывать json.dumps для возвращаемых значений, hug сделает это автоматически.

...