Я читал this post, но теперь у меня проблемы с его использованием для моей ситуации.Как обработать многомерный массив JSON с помощью ServiceStack.Text?
Учитывая следующую строку Google Maps JSON (я использую структуру данных, используемых в Blitzmap.js
):
{
"zoom":12,
"overlays":[
{
"type": "polygon",
"paths":[
[
{ "lat":52.06630340325415, "lng":5.749811642494365 },
{ "lat":52.066277072534014, "lng":5.758523457374736 },
{ "lat":52.06306460782621, "lng":5.758544915046855 },
{ "lat":52.063011942539184, "lng":5.749811642494365 }
]
]
}
],
"center":{ "lat":52.06465767289667, "lng":5.75417827877061 }
}
При использовании Newtonsoft.JSON я мог сделать:
dynamic mapObjectsAsDynamic = (JObject)formPostedData.MapObjects;
foreach (var overlay in mapObjectsAsDynamic.overlays)
{
if (overlay.type == "polygon")
{
foreach (var pathpart in overlay.paths)
{
foreach (var pathItem in pathpart.Children())
{
... = pathItem.lat;
... = pathItem.lng;
}
}
}
}
Теперь мне нравится использовать ServiceStack-х JSON (ServiceStack.Text), но я застрял на paths
.
Я пробовал:
var mapObjectsAsJsonObject = JsonObject.Parse(request.MapObjects);
var trial1 = mapObjectsAsJsonObject.ArrayObjects("overlays");
var trial2 = trial1[0].ArrayObjects("paths");
Есть ли подобный Newtonsoft путь?
Снова поможет Скотту! Он работает безупречно. Для нормальной службы Rest у меня был бы созданный класс запроса спуска. В моей первой версии я обрабатывал это выше на клиенте, но для большего количества (lat, png) точек в сочетании с услугами геокодирования Googles вам необходимо обработать его на сервере. – Stackbever
@Stackbever Хорошо, что это сработало. Да, я видел исключительно большие наборы данных, которые вы можете получить с картами Google, геокодирование на стороне сервера имеет смысл. Удачи вам в проекте ServiceStack. – Scott