C# - 如何使反序列化的对象原始字符串分开

时间:2018-05-28 08:57:12

标签: c# json

好吧,我不知道如何快速地回答我的问题,但我可以提供以下示例:

var request = WebRequest.Create(apiUrl + string.Format("/orders?status={0}&access_token={1}", orderStatusToImport, authorizationDetails.AccessToken));
    request.Method = "GET";

var response = (HttpWebResponse)request.GetResponse();

var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

var orders = JsonConvert.DeserializeObject<models.Order[]>(responseString);

var processableOrders = orders.Where(o => o.Status.ToLower() == orderStatusToImport.ToLower());

foreach (var order in processableOrders)
{
    ImportOrder(order, param1, param2, out result);
}

这完美无缺。但是,我也想保存'原创'Json。在这种情况下,这将是'responseString',但我希望Json的部分具有此订单的数据。没什么。

例如;让我们说Json有三个订单对象:

{"Orders": [
 {
  "Name":"John",
  "LastName":"Doe",
  "ItemId":5
 },
 {
  "Name":"Jane",
  "LastName":"Doe",
  "ItemId":3
 },
 {
  "Name":"Aaron",
  "LastName":"Mark",
  "ItemId":5
 }
]}

我想分别为每个订单保存Json。所以最终我只有一个字符串:

{
  "Name":"Aaron",
  "LastName":"Mark",
  "ItemId":5
 }

我怎样才能做到这一点?我正在使用Newtonsoft.Json NuGet包。

2 个答案:

答案 0 :(得分:2)

您可以循环再次序列化order对象。它将为您提供该特定订单的json字符串。

foreach (var order in processableOrders)
{
    var order_Serialized = JsonConvert.SerializeObject(order);
    ImportOrder(order, param1, param2, out result);
}

答案 1 :(得分:1)

反序列化后,选择该对象,然后将其序列化为JSON,然后就得到了你想要的东西。