将字符串列表解析为新的 json



Using .Net Nore C# MVC

我有以下代码:

我的数据:

public IEnumerable<string> GetData(string id)
{
    return  _context.TableData
            .Where(r => r.ID == id)
            .Select (r => r.Name).ToList();
}

我的 MVC 控制器:

public IActionResult GetDDL(string id)
{
    var result = _repo.GetData(id);
    //Above gives me
    //[0] = "United States"
    //[1] = "United Kingdom"
    var json = JsonConvert.SerializeObject(result);      
    //Above json convert gives me ["United States","United Kingdom"]
    return Json(json);
}

上面的代码确实返回了我 Json,但我想知道如何创建新的 JSON,以便它返回我,如下所示:

[{"Text":"United States","Text":"United Kingdom"}]

基本上,我想将其绑定回我的下拉列表,该下拉列表需要带有 JSON 数组的"文本"属性。

1. 在控制器中

public IActionResult GetDDL(string id)
{
    var result = _repo.GetData(id);
    var withProp = result.Select(x => new { Text = x });
    var json = JsonConvert.SerializeObject(withProp);      
    return Json(json);
    //Or shorter:
    var result = _repo.GetData(id).Select(x => new { Text = x });
    var json = JsonConvert.SerializeObject(result);      
    return Json(json); 
}

2. 在存储库中

您不能返回匿名类型,因此您应该创建一个将保存数据的类,并使用它来从存储库返回:

public class Data
{
    public string Text { get; set; }
}
public IEnumerable<Data> GetData(string id)
{
    return  _context.TableData
                    .Where(r => r.ID == id)
                    .Select (r => new Data { Text = r.Name });
}

控制器中的使用情况保持不变,然后:

public IActionResult GetDDL(string id)
{
    var result = _repo.GetData(id);
    var json = JsonConvert.SerializeObject(result);      
    return Json(json);
}

相关内容

  • 没有找到相关文章

最新更新