2017-10-05 35 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) + "}";