Я возвращаю JSON как строку из API, но на клиенте в JavaScript это приходит как объект - PullRequest
0 голосов
/ 25 июня 2019

Я мигрирую из .net framework в .net core 2.1 и перенес свой контроллер API на контроллер Web API в ядре 2.1.Но здесь поведение отличается, из-за чего я должен изменить свой клиентский код, который я не хочу менять.Я возвращаю JSON в виде строки из API, но на стороне клиента он не получает в виде строки, он преобразуется в объект при получении обратно на клиенте.Я хочу, чтобы он был только в виде строки, в противном случае я должен удалить JSON.PARSE e

Вот пример кода, рассмотрим набор данных, идущий откуда-то, который я использую в этом коде

[HTTPGet("[action]")]
public string GetData()
{
var result1 = JSONCONVERT.SerializeObject(new {Details =            dataset.tables[1]});

var result2 = JSONCONVERT.SerializeObject(new {Details = dataset.tables[2]});

var result = JSONCONVERT.SerializeObject(new []    {JSONCONVERT.DeSerializeObject(result1) ,    JSONCONVERT.DeSerializeObject(result2)}); 

return result;
}

Такэтот результат, который я отправляю обратно клиенту, ожидаю того же, что и строка на клиенте, но он поступает как объект, который хорош, но мне нужно внести изменения в коде в моем клиенте, потому что раньше он приходил как строка, и мы проанализировали его,Но теперь нет необходимости разбирать объект на приемном конце.Есть ли способ, которым я могу иметь только строку?Потому что я не хочу вносить изменения в 100 мест и тестировать то же самое.

1 Ответ

0 голосов
/ 25 июня 2019

Вы можете использовать сам сериализатор JSON вместо SerializeObject.Это позволит вам контролировать выход.Вот так:

Product product = new Product();
product.ExpiryDate = new DateTime(2008, 12, 28);

JsonSerializer serializer = new JsonSerializer();
serializer.Converters.Add(new JavaScriptDateTimeConverter());
serializer.NullValueHandling = NullValueHandling.Ignore;

using (StreamWriter sw = new StreamWriter(@"c:\json.txt"))
using (JsonWriter writer = new JsonTextWriter(sw))
{
    serializer.Serialize(writer, product);
    // {"ExpiryDate":new Date(1230375600000),"Price":0}
}
...