Как вернуть сериализованный в JSON с помощью C # - PullRequest
2 голосов
/ 08 июня 2011

Я работаю с WCF, в которой я возвращаю JSON.Но я получаю сообщения, похожие на

"{\"ids\":[\"id\":1,\"id\":34,\"id\":67,\"id\":100,\"id\":133,\"id\":166,\"id\":199]}"

Как мне избавиться от первой и последней кавычек?

РЕДАКТИРОВАТЬ:

public class Ids {
   public IdDetails[] ids{get;set}
}
public class IdDetails{
   public int id {get;set}
}

И здесь я возвращаю JSON

public string GetIds(){
   Ids ids = new Ids();
   List<IdDetails> idd = new List<IdDetails>();
   for(int i=0;i<10; i++){
      idd.add(new IdDetails(i+1*33));
   }
   ids.ids = idd.ToArray();
   JavaScriptSerializer jSerialize = new JavaScriptSerializer();
   string json = jSerialize.Serialize(ids);
   return ids;
}

* РЕДАКТИРОВАТЬ 2: РЕШЕНО *

Метод не должен возвращать строку.Он должен вернуть Ids-объект.Нет необходимости сериализации.Установите ResponseFormat = WebMassageFormat.Json, и он будет работать.

В любом случае, спасибо!

Ответы [ 2 ]

4 голосов
/ 08 июня 2011

Ищете ли вы с отладчиком Visual Studio строку?

Screenshot

Отладчик показывает строки как строковый литерал C #.Сама строка на самом деле не содержит начальных и конечных символов " и символов \.

Console.WriteLine(s);

Вывод:

{"ids":["id":1,"id":34,"id":67,"id":100,"id":133,"id":166,"id":199]}
1 голос
/ 28 июня 2011

Класс JavaScriptSerializer

Класс JavaScriptSerializer используется внутри уровня асинхронной связи для сериализации и десериализации данных, передаваемых между браузером и веб-сервером.Вы не можете получить доступ к этому экземпляру сериализатора.Однако этот класс предоставляет публичный API.Поэтому вы можете использовать этот класс, когда хотите работать с нотацией объектов JavaScript (JSON) в управляемом коде.

Для сериализации объекта используйте метод Serialize.Чтобы десериализовать строку JSON, используйте методы Deserialize или DeserializeObject.Чтобы сериализовать и десериализовать типы, которые изначально не поддерживаются JavaScriptSerializer, реализуйте пользовательские конвертеры с помощью класса JavaScriptConverter.Затем зарегистрируйте конвертеры, используя метод RegisterConverters.

Я использовал его в не-веб-приложениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...