Возвращаемая .Net WCF строка, содержащая JSON, отображается с \ "вместо простого" - PullRequest
0 голосов
/ 27 июня 2018

Я использую сервис .NET WCF, чтобы вернуть строку, содержащую JSON из моей БД в MongoDB. Это работает хорошо, но когда я делаю GET, я получаю файл Json с \ "вместо простого"

Например. Я получаю \"id\" вместо "id"

Вот мой код:

string IDeviceService.GetDeviceList()
{
        IMongoCollection<BsonDocument> collection = DatabaseManager.DeviceCollection();
        string deviceList = string.Empty;
        var devices = collection.Find(new BsonDocument()).ToList();

        foreach (var device in devices)
        {
            string json = device.ToString();
            deviceList = (deviceList + json);
        }

        return deviceList;
}

Я пытался сделать .Replace("\\", ""), который должен добиться цели, но ничего не дает.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Мне кажется, у меня возникла похожая проблема: Удалите escape-символы и кавычки из JSON

Я также пытался исправить это с помощью .Replace (), но я не думаю, что вы можете использовать это для удаления escape-символов.

По сути, я исправил это, изменив тип возвращаемого значения на Stream вместо string, а затем возвратил строку json следующим образом:

WebOperationContext.Current.OutgoingResponse.ContentType = "application/json; charset=utf-8";
return new MemoryStream(Encoding.UTF8.GetBytes(deviceList));

Таким образом, вместо return deviceList; используйте приведенные выше строки и измените string IDeviceService.GetDeviceList() на stream IDeviceService.GetDeviceList()

Или что-то в этом роде. Ваш WCF отличается от моего, я сур, так что может быть больше вещей.

0 голосов
/ 27 июня 2018

Джсон, я возвращаюсь:

"{ \"_id\" : ObjectId(\"5b31ee511e7c9ad0bf63b17a\"), \"id\" : \"01\", \"name\" : \"device1\", \"deviceType\" : \"presenceSensor\" }{ \"_id\" : ObjectId(\"5b31ee511e7c9ad0bf63b179\"), \"id\" : \"14\", \"name\" : \"Device14\", \"deviceType\" : \"humiditySensor\" }{ \"_id\" : ObjectId(\"5b31ee511e7c9ad0bf63b17b\"), \"id\" : \"02\", \"name\" : \"device2\", \"deviceType\" : \"humiditySensor\" }{ \"_id\" : ObjectId(\"5b31ee511e7c9ad0bf63b17e\"), \"id\" : \"03\", \"name\" : \"device3.1\", \"deviceType\" : \"temperatureSensor\" }{ \"_id\" : ObjectId(\"5b31f7371e7c9ad0bf63b361\"), \"id\" : \"04\", \"name\" : \"device4\", \"deviceType\" : \"lightSensor\" }"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...