2016-11-30 177 views
1

我一直在尝试将json字符串转换为对象列表。这是Json字符串。将json字符串反序列化为使用Newtonsoft的对象

{"fooditems":[{"item_id":1,"image_url":"http:\/\/tse1.mm.bing.net\/th?id=OIP.M201ca8470787c6ccf50f3b05118d2a27o0&pid=15.1","food_name":"Hollandia","food_description":"Maiores excepturi dolores recusandae quam. Et consequatur sunt et hic recusandae. Vero quisquam sed nemo cumque voluptates qui.","price":"144","item_special":"0","category":"2","date_created":"2016-10-18 07:12:45","date_updated":"2016-10-18 07:12:45","category_name":"Drinks"},{"item_id":2,"image_url":"http:\/\/tse1.mm.bing.net\/th?id=OIP.M201ca8470787c6ccf50f3b05118d2a27o0&pid=15.1","food_name":"Amstel Malta","food_description":"Delectus et voluptas qui. Quae dolorem rerum dignissimos et. Blanditiis porro temporibus perspiciatis voluptates similique.","price":"185","item_special":"1","category":"2","date_created":"2016-10-18 07:12:45","date_updated":"2016-10-18 07:12:45","category_name":"Drinks"},{"item_id":3,"image_url":"http:\/\/tse1.mm.bing.net\/th?id=OIP.M201ca8470787c6ccf50f3b05118d2a27o0&pid=15.1","food_name":"Egusi soup","food_description":"Aliquid et doloribus quis deserunt aut quas. Explicabo qui accusamus tempore omnis sint porro nostrum. Est nulla et commodi. Et reprehenderit rerum natus ipsa voluptas labore.","price":"152","item_special":"1","category":"1","date_created":"2016-10-18 07:12:45","date_updated":"2016-10-18 07:12:45","category_name":"Food"},{"item_id":4,"image_url":"http:\/\/tse1.mm.bing.net\/th?id=OIP.M201ca8470787c6ccf50f3b05118d2a27o0&pid=15.1","food_name":"Ponche","food_description":"Consequatur eius aut aut laudantium quis. Fuga facere a amet voluptatum. Ex optio accusamus corrupti porro repellendus ea.","price":"112","item_special":"1","category":"2","date_created":"2016-10-18 07:12:45","date_updated":"2016-10-18 07:12:45","category_name":"Drinks"},{"item_id":5,"image_url":"http:\/\/tse1.mm.bing.net\/th?id=OIP.M201ca8470787c6ccf50f3b05118d2a27o0&pid=15.1","food_name":"Teem","food_description":"Est atque eum et qui dolore ut. Dignissimos dicta qui nesciunt mollitia quo. Voluptatibus suscipit eaque laboriosam et ad. Iste illo vel consequatur doloribus.","price":"165","item_special":"1","category":"2","date_created":"2016-10-18 07:12:45","date_updated":"2016-10-18 07:12:45","category_name":"Drinks"},{"item_id":6,"image_url":"http:\/\/tse1.mm.bing.net\/th?id=OIP.M201ca8470787c6ccf50f3b05118d2a27o0&pid=15.1","food_name":"Yam Pepper soup","food_description":"Illo et ab doloribus adipisci quo hic aut. Ea fugiat ut sed minus ad non nesciunt modi. Voluptatibus nostrum labore cum maxime ullam.","price":"143","item_special":"1","category":"1","date_created":"2016-10-18 07:12:45","date_updated":"2016-10-18 07:12:45","category_name":"Food"},{"item_id":7,"image_url":"http:\/\/tse1.mm.bing.net\/th?id=OIP.M201ca8470787c6ccf50f3b05118d2a27o0&pid=15.1","food_name":"Coke","food_description":"Inventore nulla beatae incidunt delectus itaque provident accusantium. Aperiam veritatis doloribus veritatis illum rerum eum reprehenderit dolore. Ut quis fuga quia est.","price":"151","item_special":"0","category":"2","date_created":"2016-10-18 07:12:45","date_updated":"2016-10-18 07:12:45","category_name":"Drinks"},{"item_id":8,"image_url":"http:\/\/tse1.mm.bing.net\/th?id=OIP.M201ca8470787c6ccf50f3b05118d2a27o0&pid=15.1","food_name":"Jollof Rice","food_description":"Fugit labore vel ea sit voluptas consequuntur eum iste. Dolorum non distinctio sed explicabo. Saepe velit hic praesentium molestiae aperiam in autem. Soluta enim tenetur omnis tempore qui odit.","price":"172","item_special":"1","category":"1","date_created":"2016-10-18 07:12:45","date_updated":"2016-10-18 07:12:45","category_name":"Food"},{"item_id":9,"image_url":"http:\/\/tse1.mm.bing.net\/th?id=OIP.M201ca8470787c6ccf50f3b05118d2a27o0&pid=15.1","food_name":"Meat Pie","food_description":"Et vitae eveniet maxime maxime a. Explicabo consequatur quas atque non. Tempora voluptate similique dolore minus enim sit nulla eaque. Ut omnis aut incidunt assumenda excepturi.","price":"144","item_special":"0","category":"3","date_created":"2016-10-18 07:12:45","date_updated":"2016-10-18 07:12:45","category_name":"Snacks"},{"item_id":10,"image_url":"http:\/\/tse1.mm.bing.net\/th?id=OIP.M201ca8470787c6ccf50f3b05118d2a27o0&pid=15.1","food_name":"Doughnut","food_description":"Enim ipsa dolores velit autem. Illo rerum in voluptatem fugiat delectus. Sint quos provident soluta nisi ut. Cupiditate nemo temporibus qui fugiat earum fugit. Recusandae sit explicabo non exercitationem voluptatem fugiat.","price":"139","item_special":"1","category":"3","date_created":"2016-10-18 07:12:45","date_updated":"2016-10-18 07:12:45","category_name":"Snacks"},{"item_id":11,"image_url":"http:\/\/tse1.mm.bing.net\/th?id=OIP.M201ca8470787c6ccf50f3b05118d2a27o0&pid=15.1","food_name":"Fanta","food_description":"Voluptas qui asperiores qui ratione officia. Aut aliquid placeat sunt error saepe at. Repellat et ut sequi fuga aut ad debitis. Voluptatem minus sunt quam autem aut quod. Et sed dolorem qui quas.","price":"190","item_special":"1","category":"2","date_created":"2016-10-18 07:12:45","date_updated":"2016-10-18 07:12:45","category_name":"Drinks"},{"item_id":12,"image_url":"http:\/\/tse1.mm.bing.net\/th?id=OIP.M201ca8470787c6ccf50f3b05118d2a27o0&pid=15.1","food_name":"Viju Milk","food_description":"Minima excepturi voluptatem aut a sequi numquam deserunt veritatis. Enim ut vitae aut et. Non laudantium consequatur praesentium accusantium quo. Suscipit sequi dolor culpa consectetur quisquam dolorem.","price":"157","item_special":"0","category":"2","date_created":"2016-10-18 07:12:45","date_updated":"2016-10-18 07:12:45","category_name":"Drinks"},{"item_id":13,"image_url":"http:\/\/tse1.mm.bing.net\/th?id=OIP.M201ca8470787c6ccf50f3b05118d2a27o0&pid=15.1","food_name":"Nutri Milk","food_description":"Voluptatem atque consequatur aut est laudantium voluptas et. Earum et nihil minima ea ex. Et consequatur odio voluptas nihil quod.","price":"149","item_special":"1","category":"2","date_created":"2016-10-18 07:12:46","date_updated":"2016-10-18 07:12:46","category_name":"Drinks"},{"item_id":14,"image_url":"http:\/\/tse1.mm.bing.net\/th?id=OIP.M201ca8470787c6ccf50f3b05118d2a27o0&pid=15.1","food_name":"Eva Water","food_description":"Labore voluptatibus omnis omnis eaque. Occaecati aliquid voluptatum ducimus. Excepturi id magni quidem.","price":"137","item_special":"0","category":"2","date_created":"2016-10-18 07:12:46","date_updated":"2016-10-18 07:12:46","category_name":"Drinks"},{"item_id":15,"image_url":"http:\/\/tse1.mm.bing.net\/th?id=OIP.M201ca8470787c6ccf50f3b05118d2a27o0&pid=15.1","food_name":"Chapman","food_description":"Aut fugit recusandae laborum voluptas ut soluta accusantium. Impedit itaque nihil officia voluptas sed corrupti dicta. Reprehenderit id aut occaecati expedita doloribus et. Omnis quasi vel illum nam id tempora incidunt.","price":"194","item_special":"0","category":"2","date_created":"2016-10-18 07:12:46","date_updated":"2016-10-18 07:12:46","category_name":"Drinks"}]} 

而且使用json2csharp我得到这个类

public class Rootobject 
{ 
    public Fooditem[] Fooditems { get; set; } 
} 

public class Fooditem 
{ 
    public int item_id { get; set; } 
    public string image_url { get; set; } 
    public string food_name { get; set; } 
    public string food_description { get; set; } 
    public string price { get; set; } 
    public string item_special { get; set; } 
    public string category { get; set; } 
    public string date_created { get; set; } 
    public string date_updated { get; set; } 
    public string category_name { get; set; } 
} 

但是,当反序列化,这里的错误,我得到 Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List 1 Proxy.Models.Fooditem]”,因为类型需要一个JSON阵列(例如[ 1,2,3])来正确反序列化。 要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化的类型,以使其为正常的.NET类型(例如,不是像整数这样的基本类型,也不是集合类型像数组或列表),可以从JSON对象反序列化。 JsonObjectAttribute也可以添加到类型中,以强制它从JSON对象反序列化。 `

这是我的反序列化代码。

var fooditems=JsonConvert.DeserializeObject<List<Fooditem>>(json) 

对不起,这很长。将不胜感激任何帮助。

+1

你可以添加你的反序列化代码吗? – HebeleHododo

+0

我还没有看到你的反序列化代码,但我认为你的json代码在image_url时遇到了转义字符的问题。 – BraveHeart

+0

@BraveHeart我不明白 –

回答

1

使用这种反序列化: var fooditems = JsonConvert.DeserializeObject<Rootobject>(jsonString);

你想投RootObject JSON来FoodItems的名单是问题

+0

所以没有列表?它返回什么类型? –

+0

它会返回一个根对象,然后您可以访问该属性,例如foodItems.FoodItems –

+0

我得到一个“无法找到构造函数用于类型Fooditem。 –

1

OK,我看到你的问题是, 你的问题是,你正在尝试将json字符串直接反序列化到列表中,而json代码指示列表应该是对象内的属性

json代码以{{这意味着它是一个具有列表的对象。因此,对于您的代码工作的JSON字符串应与[它说,这是有一个列表

因此,为了使你的代码的工作,你必须选择一个列表,而不是一个对象开始:

  1. 要么你告诉团队向您发送JSON字符串开始[

  2. 使用此var fooditems = JsonConvert.DeserializeObject<Rootobject>(jsonString);

该类别中它会返回一个类型为RootObject的对象

+0

我认为2更合理因此在类型为RootObject的对象中,进入内部列表??? –

+0

是的,你可以,因为它是一个publi RootObject中的c属性,但您知道可以将RootObject命名为其他任何内容 – BraveHeart

相关问题