Sergey Alexandrovich Kryukov
Вопрос о "Новообращенном" не имеет никакого литературного смысла. Объект Javascript-это одно, объект .NET-совсем другое; они никогда не встречались вместе; один-это клиентская сторона, другой-серверная. (Предполагая, что вы используете ASP.NET потому что — что же еще?) Более того, вы не "передаете объект stringify".
Однако вопрос, по сути, имеет смысл; речь идет о десериализации JSON в .NET.
Вы отправляете sting в своем HTTP-запросе, который представляет собой строковое представление newuser
в синтаксисе Ajax (Javascript).
Когда ваш серверный код получит запрос, вам нужно будет десериализовать эту строку JSON. Вы можете использовать System.Web.Script.Serialization.JavaScriptSerializer
:
http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer%28v=vs.110%29.aspx[^].
Каждый из методов JavaScriptSerializer
пытается десериализовать строку JSON в объект .NET. Пожалуйста, смотрите примеры кода для получения более подробной информации. Смотрите также этот пример:
http://dailydotnettips.com/2013/09/26/sending-raw-json-request-to-asp-net-from-jquery[^].
Ключевая фраза на этой странице звучит так: "чтобы разобрать запрос json, вам нужно разобрать его самостоятельно." Однако это не совсем так. Вы можете разумно "угадать" ожидаемый тип объекта .NET; тогда десериализация с помощью этого сериализатора будет успешной (см. мой пример кода, демонстрирующий его, второй).
Более подробная информация зависит от типа newuser
и о том, что вы хотите сделать с этим на стороне сервера. Давайте рассмотрим простой пример:
using Serializer = System.Web.Script.Serialization.JavaScriptSerializer;
// (reference assembly System.Web.Extensions
// ...
string jsArray = @"[1,""false"",false]";
string jsDictionary = @"{""x"": 5}";
Serializer serializer = new Serializer();
object array = serializer.DeserializeObject(jsArray);
object dictionary = serializer.DeserializeObject(jsDictionary);
Чтобы понять, как входные строки были получены из JSON, см.:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify[
^].
Теперь осмотрите объекты
array
и
dictionary
. Если ты позвонишь
GetType()
на них вы увидите, что один из них представляет собой массив
System.Object
и еще один-это словарь объектов, а "x" - это строковый ключ. Такие объекты слишком универсальны, поэтому вы можете попытаться разобрать их на некоторые именованные типы. Таким образом, Вы сможете получить доступ к экземплярам некоторых именованных типов и их членам. Давайте перепишем предыдущий пример кода именно таким "типизированным" способом:
using Serializer = System.Web.Script.Serialization.JavaScriptSerializer;
using IntDictionary = System.Collections.Generic.Dictionary<string, int>;
// ...
string jsArray = @"[1,""false"",false]";
string jsDictionary = @"{""x"": 5}";
Serializer serializer = new Serializer();
object[] typedArray = serializer.Deserialize<object[]>(jsArray);
IntDictionary typedDictionary = serializer.Deserialize<IntDictionary>(jsDictionary);
Теперь вы можете использовать экземпляры явно определенных типов
object[]
и <cod>IntDictionary и фактически получить доступ к членам экземпляра экземпляров
typedArray
и
typedDictionary
.
—СА