2017-10-05 37 views
0

我有從列表序列化爲下面追加項目到現有的Json與Newtonsoft JSON

var products= JsonConvert.SerializeObject(produstList, Formatting.Indented); 

{ 
    "Products": [ 
    { 
     "Name": "Sample Product", 
     "Id": "LT2134", 
     "ProcudtCode": "001KP" 
    } 
    ] 
} 

現有JSON想要apped另一個串行化JSON對象(產品列表),以上述一個這樣的下方,在那裏我可以做到這一點的一種方式。

{ 
    "Products": [ 
    { 
     "Name": "Sample Product", 
     "Id": "LT2134", 
     "ProcudtCode": "001KP" 
    } 
    ], 

    "ProductList": [ 
    { 
     "Category": "Electronics", 
     "SubCategory": "Router", 
     "ProcudtCode": "001KP", 
     "Description": "wifi router", 
     "Brand": "test"  
    } 
    ] 
} 

請幫我

+0

你究竟試過了什麼?你卡在哪裏?從你的問題來看,這不是很明顯。 –

+0

我試圖將使用Jobject的新json對象添加到下面的現有列表中。但沒有獲得有效的json。 JObject jo = JObject.FromObject(produstList); var products = JsonConvert.SerializeObject(Products,Formatting.Indented); jo.Add(「ProductsList」,產品); – Das

回答

1

你有兩個選擇,你可以在兩個對象追加你做的序列化之前,也可以事後將兩者攪和JSON字符串(這真的取決於具體的方案) 。我建議您爲此創建另一個數據模型,否則解序列化時可能會遇到問題。

我推薦的解決方案是:

public class MixedProduct { 
    public List<Products> Products {get; set;} 
    public List<ProductList> ProductList {get; set;} 
} 

var products= JsonConvert.SerializeObject(new MixedProduct { Products = A, ProductList = B}, Formatting.Indented); 

如果由於某種原因,你不能或不願這樣做,你可以做到以下幾點:

var products= JsonConvert.SerializeObject(new Object { Products = A, ProductList = B}, Formatting.Indented); 

如果你想追加合併兩個JSON字符串,你可以做到以下幾點:

String firstJson = " { \"Products\": [ {} ] } "; 
String secondJson = " { \"ProductList\": [ {} ] } "; 
var tempFirst = firstJson.TrimStart().TrimEnd(); 
var tempSecond = secondJson.TrimStart().TrimEnd(); 
String mixedJson = "{" + tempFirst.Substring(1, tempFirst.Length - 2) 
        + "," + tempSecond.Substring(1, tempSecond.Length - 2) + "}"; 

這將是更安全的混合他們以下方式,雖然我n爲了處理格式稍差的JSON字符串:

String mixedJason = "{" + tempFirst.Substring(1, tempFirst.Length - 2).TrimEnd().TrimEnd(',') 
        + "," + tempSecond.Substring(1, tempSecond.Length - 2) + "}";