簡體   English   中英

將字符串列表解析為新的json

[英]Parsing list of string to new json

使用.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數組的“ Text”屬性。

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM