Jos*_*osh 9 c# restsharp xamarin.android
var client = new RestClient("http://10.0.2.2:50670/api");
var request = new RestRequest("Inventory", Method.GET);
request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; };
// execute the request to return a list of InventoryItem
RestResponse<JavaList<InventoryItem>> response = (RestResponse<JavaList<InventoryItem>>)client.Execute<JavaList<InventoryItem>>(request);
Run Code Online (Sandbox Code Playgroud)
返回的内容是JSON字符串,即对象数组.以下是它的简短摘录:
[{"Id":1,"Upc":"1234567890","Quantity":100,"Created":"2012-01-01T00:00:00","Category":"Tequila","TransactionType":"Audit","MetaData":"PATRON 750ML"},{"Id":2,"Upc":"2345678901","Quantity":110,"Created":"2012-01-01T00:00:00","Category":"Whiskey","TransactionType":"Audit","MetaData":"JACK DANIELS 750ML"},{"Id":3,"Upc":"3456789012","Quantity":150,"Created":"2012-01-01T00:00:00","Category":"Vodka","TransactionType":"Audit","MetaData":"ABSOLUT 750ml"}]
Run Code Online (Sandbox Code Playgroud)
错误消息:
由于对象的当前状态,操作无效
这有什么不对?我InventoryItem的属性与JSON字符串中的每个对象相同.我错过了一步吗?
我怀疑在RestSharp中使用的SimpleJson不能反序列化为JavaList.
首先,我会尝试反序列化为:
List<InventoryItem>
Run Code Online (Sandbox Code Playgroud)
如果做不到这一点,我推荐ServiceStack.Text - .Net最快的JSON库; 并做:
var response = client.Execute(request);
var thingYouWant = JsonSerializer.DeserializeFromString<List<InventoryItem>>(response.Content);
Run Code Online (Sandbox Code Playgroud)
这实际上就是我自己做的事情.
编辑(感谢评论员): 在较新的版本中,这将是:
var deserializer = new JsonDeserializer();
deserializer.Deserialize<List<InventoryItem>>(response);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17613 次 |
| 最近记录: |