2016-01-21 4 views
3

Я новичок в C# и всей платформе .net, поэтому я борюсь с множеством вещей, которые, вероятно, являются основными. полегче со мной. Все, что я пытаюсь сделать прямо сейчас, это вернуть массив объектов json (как строки, очевидно).возвращает массив строк .net C# web api

[HttpPost] 
public string[] PostJsonString([FromBody] string[] arr) 
    { 

     return arr; 

    } 

И в Почтальон, я посылаю

[{"someProp":"someVal"},{ "aThing":"someOtherThing"}] 

Так больно просто ... Буквально только реогировать с точным содержанием тела запроса, но по какой-то причине я вернусь пустой массив. Кто-нибудь может понять, почему это может быть? Я попытался вернуть массив в виде строки с str.toArray, но затем возвращаю тип объекта, т. Е. "System.String[]". Мне просто нужен простой ответ JSON с объектами в массиве.

Любые советы приветствуются. Даже если это просто укажет мне на полезный ресурс. Я исчерпал все релевантные вопросы S/O и а) не вижу того, что вполне соответствует тем, что я пытаюсь выполнить, и б) все еще пытались решить некоторые из этих решений.

+1

Ваш json не представляет собой строковый массив, более похожий на словарь или пользовательский объект. Строковый массив будет '[" someProp "," someVal "," aThing "," someOtherThing "]' – Jonesopolis

+0

ahhh. mkay. @Jonesopolis, я получил. так что даже если json технически является строкой (будучи тем, что http фактически не знает, что такое объект, верно?), он все еще ведет себя как объект? это верно? – spb

+0

@ B.ClayShannon danke, herr Shannon. Я посмотрел на него, но, я думаю, я просто не понимал, что JSON уже ведет себя как объекты при отправке через http. – spb

ответ

1

Ваш контроллер получит одну строку

"[{\"someProp\":\"someVal\"},{ \"aThing\":\"someOtherThing\"}]" 

Изменить подпись метода для

public string PostJsonString([FromBody] string arr) 

Если вы хотите работать с массивом JSON, я рекомендую использовать JSON.net (ака Newtonsoft.Json) и JArray.Parse или JObject.Parse

using Newtonsoft.Json 
// ... 
JArray a = JArray.Parse(json); 
+1

УСПЕХ! Спасибо друг. '[HttpPost] public JArray PostJsonString ([FromBody] string arr) { JArray a = JArray.Parse (arr); возвращение a; } 'также, я не отправлял массив внутри строки изначально. я отформатировал свой запрос от '[json здесь]' до '[json здесь] ''. просто записка для потомков. ;) – spb

1
[HttpPost] 
public JsonResult PostJsonString([FromBody] string[] arr) 
{ 
    return Json(arr); 
} 
Смежные вопросы