2017-04-17 139 views
0

我有以下基JSON我通過解析excel表創建此:將字符串轉換的兩個列表的一個對象

{ 
"Rows": [{ 
    "RowId": "f7645b3e-a576-4cfe-a136-481d27b708cf", 
    "Columns": ["Code", "Barcode", "SalesRep","Price"], 
    "Values": ["bk101", "343131231", "Gambardella, Matthew","44.95"], 
    "Status": "QUEUED" 
} 

我想提及的JSON的每行進一步解析到另一種類型的,其保持項目列表例如:

{ 
    "Articles": [{ 
    "Id": "f7645b3e-a576-4cfe-a136-481d27b708cf" 
    "Code": "bk101", 
    "Barcode": "343131231", 
    "SalesRep": "Gambardella, Matthew", 
    "Price":"44.95" 
    }] 
} 

如您所見,列和值已配對。 我知道我可以使用循環進行這種轉換,通過列和值的列表,但有沒有另一種方法可以以有效的方式進行這種轉換?

回答

2

如何JavaScriptSerializer ...

public class Row 
    { 
     public string RowId { get; set; } 
     public List<string> Columns { get; set; } 
     public List<string> Values { get; set; } 
     public string Status { get; set; } 
    } 

    public class RootRowObject 
    { 
     public List<Row> Rows { get; set; } 
    } 

    public class Article 
    { 
     public string Id { get; set; } 
     public string Code { get; set; } 
     public string Barcode { get; set; } 
     public string SalesRep { get; set; } 
     public string Price { get; set; } 
    } 

    string ConvertJson(string jsonRow) 
    { 
     RootRowObject rootRow = new 
       JavaScriptSerializer().Deserialize<RootRowObject>(jsonRow); 

     List<Article> articles = rootRow.Rows.Select(x => new Article 
     { 
      Code = x.Values[0], 
      Barcode = x.Values[1], 
      Id = x.RowId, 
      Price = x.Values[3], 
      SalesRep = x.Values[2] 
     }).ToList(); 

     return new JavaScriptSerializer().Serialize(articles); 
    } 
+0

這個方式比使用循環確實比較好。感謝@caner! :] – Afflatus

+0

很高興幫助:) – caner

相關問題