Я хочу преобразовать строку json в массив C #

#c# #json

#c# #json

Вопрос:

Моя модель

 public class Questions
{
    public string Question { get; set; }

    public string[] Options { get; set; }
}
  

Мой метод контроллера для создания бумаги

 [HttpPost]
    public ActionResult Create()
    {
        var resolveRequest = HttpContext.Request;
        resolveRequest.InputStream.Seek(0, SeekOrigin.Begin);
        string jsonString = new StreamReader(resolveRequest.InputStream).ReadToEnd();
        var dist = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(jsonString);
        string[] result = dist.Select(kv => kv.Value.ToString()).ToArray();
        var conn = new MongoClient(Settings.Default.ConnectionStringSetting);
       var server = conn.GetServer();
        mongodb = server.GetDatabase(Settings.Default.DbMongoName);
        var collection = mongodb.GetCollection<MultiChoice>("MultiChoice");
        collection.Update(Query<PaperDetail>.EQ(s => s.paperName, "sam"), Update<MultiChoice>.AddToSet(s => s.questions, new Questions { Question = "Some question", Options = result }));
        return RedirectToAction("MultipleChoice");
    }
  

Я хочу преобразовать свою строку json в массив строк и передать все данные в «параметры строки []»

Комментарии:

1. В чем вопрос?

2. @Arijoon Нет: D по крайней мере, я не вижу…

3. как десериализовать массив json в массив строк c #??

4. Какую ошибку вы получаете?

Ответ №1:

То, как вы пытаетесь сгенерировать множественный выбор с подобным кодом, а затем пытаетесь преобразовать строку json обратно, совсем не так ASP.Net MVC , WebAPI как вам хотелось бы. Есть очень простой и простой способ сделать это. Лучшим подходом было бы —

  1. Визуализируйте представление с помощью шаблона редактора
  2. Используйте form post для прямой публикации и используйте ModelBinder по умолчанию, чтобы связать его для вас. Вы получите объект напрямую. MVC преобразует ее для вас.

Попробуйте эту статью —

https://msdn.microsoft.com/en-us/library/dd405231 (v= против 98).aspx

Редактировать :

Используйте что-то вроде этого —

 [HttpPost]
public ActionResult Create(Questions model)
{
}
  

но для выполнения этой работы вы должны использовать представление, подобное этому —

 @model Questions
......

@using (Html.BeginForm("Create", ..., FormMethod.Post,..)
{
    @Html.TextBoxFor(x => x.Question)

    @Html.DropDownListFor(model => model.Options, Model.Options.Select(x => new SelectListItem() { Text = x Value = x }))
  

Комментарии:

1. Пожалуйста, скажите мне, как я могу получить все значения из строки json в массив ..??

2. Я уже это сделал, но вам, похоже, просто нужно решение, не хотите этому учиться. Не подходит для длительного запуска. В любом случае, проверьте редактирование.