Я пытаюсь преобразовать проект на основе Web Api в Servicestack, и теперь у меня возникла проблема при преобразовании сложного (клиентского) графа объектов объекта в динамический класс C# (поскольку это сложная и в основном используемая клиентская сторона, я не хочу создавать представление C# этого). Вот некоторые раздели код (не точный код, так что может быть ошибки):Преобразование Web API в Servicestack - JObject to JsonObject
СТАРЫЙ КОД:
[HttpPost]
public HttpResponseMessage Save([FromBody] JObject jsonData)
{
dynamic jsonDataAsDynamic = jsonData;
var test = (JObject)jsonDataAsDynamic.TheComplexObjectGraphStringified;
}
Приведенный выше код работает без проблем.
НОВЫЙ КОД:
[Route("/SomeRoute/Save")]
public class PostRequest
{
public string A { get; set; }
public string B { get; set; }
public string TheComplexObjectGraphStringified { get; set; }
}
public object Post(PostRequest request)
{
var test = JsonObject.Parse(request.TheComplexObjectGraphStringified);
}
Примечание: Так как я новичок на Servicestack я (пока) не знаю, если JsonObject.Parse делает то же самое, как приведение к JObject.
вызовМой браузер:
$.ajax({
type: "POST",
url: <save url>,
data: '{' +
'"A":' + a +
',"B":' + b +
',"TheComplexObjectGraphStringified":' + JSON.stringify(TheComplexObjectGraph) +
'}',
contentType: "application/json",
dataType: "json",
Пример данных:
После применения stringify с яваскрипта содержания (НА КЛИЕНТА) из 'TheComplexObjectGraphStringified' является (для интереса это данные Google):
{"zoom": 12, "tilt": 0, "overlays": [{"uniqueid": 1387287972247, "paths": [[{lat ": 52.096898776519055," lng ": 5.655044395378695}, { "латы": +52,093607315804085, "LNG": 5,655044395378695}]]}], "центр": { "латы": 52,095253046161574, "LNG": +5,6594110316549 4}}
Теперь странно, когда это прибывает на сервер в свойстве «TheComplexObjectGraphStringified», кавычки удаляются! Отладчик данные:
«{зум: 12, наклон: 0, накладываемые: < ... остальные строки ...>»
Как вы можете видеть увеличение не котируется какой-то более (я ожидал что-то как «{\» зумирования \ «: 12»
Я заметил, если добавить некоторые кавычки экранированы вручную с помощью отладчика JsonObject.Parse, кажется, работает
Что я делаю неправильно
Огромное спасибо, и я чувствую себя как greenhorn, рассматривая мое решение, не связанное с натяжением. Он работает сейчас! И прилагаемая ссылка действительно полезна. – Stackbever
@Stackbever Awesome рад, что это сработало. – Scott