在 Xamarin.Android 中解析 json 请求

Posted

技术标签:

【中文标题】在 Xamarin.Android 中解析 json 请求【英文标题】:Parse json request in Xamarin.Android 【发布时间】:2018-12-17 08:44:52 【问题描述】:

我已经搜索了很长时间,但没有成功......

我想解析来自 Xamarin.Android 中 API 的 json 响应。

我的 json 响应是这样的:

[
  
    "id": "21",
    "date": "2018-01-01",
    "name": "Name1"
  ,
  
    "id": "22",
    "date": "2018-01-02",
    "name": "Name2",
  
]

如您所见,它包含 2 行。行数可以改变。有时有 6 行,但有时只有 2...

所以我想获取每一行的每个 ID、日期和名称标签的值。 我尝试了 for each 循环,但没有成功...

有人可以帮我处理 DataSet 和 DataTable 吗?

我看到了这段代码,但 DataSet 和 DataTable 出现错误:

string json = @"
  'Table1': [
    
      'id': 0,
      'item': 'item 0'
    ,
    
      'id': 1,
      'item': 'item 1'
    
  ]
";

DataSet dataSet = JsonConvert.DeserializeObject<DataSet>(json);

DataTable dataTable = dataSet.Tables["Table1"];

Console.WriteLine(dataTable.Rows.Count);
// 2

foreach (DataRow row in dataTable.Rows)

    Console.WriteLine(row["id"] + " - " + row["item"]);

// 0 - item 0
// 1 - item 1

提前谢谢你!

【问题讨论】:

newtonsoft json 怎么样? 是的,我试过了,但没有理解...你能帮我处理 DataSet 和 DataTable 吗?这是,我不明白。 【参考方案1】:

你可以使用Json.netJsonConvert.DeserializeObject函数

创建一个 ObjModel 类来携带您的 json 数据。

public class ObjModel

    [JsonProperty("id")]
    public string Id  get; set; 

    [JsonProperty("date")]
    public string Date  get; set; 

    [JsonProperty("name")]
    public string Name  get; set; 


ObjModel[] datas = JsonConvert.DeserializeObject<ObjModel[]>(jsonData);

c#在线:https://dotnetfiddle.net/UybCQ1

如果你想DeserializeObjectDataTable 它也可以工作。

DataTable  dt = JsonConvert.DeserializeObject<DataTable>(jsonString2);

foreach(DataRow row in dt.Rows)
  Console.WriteLine(row["id"]);

【讨论】:

有效!有什么方法可以获取行数吗? 简单的方法你可以使用for loop来计算数组然后索引就是你的数字。dotnetfiddle.net/UybCQ1你可以将数字添加到你的模型中 看起来像这样。 string jsonString2 = "[\"id\": \"21\",\"date\": \"2018-01-01\",\"name\": \"Name1\",\"id\": \"22\",\"date\": \"2018-01-02\", \"name\": \"Name2\"]"; 如果你的字符串想要包含"双引号另一种方式你需要在双引号之前添加\ 您能在 dotnetfiddle.net 上取消您的代码,以便我再看一下 for 循环吗?

以上是关于在 Xamarin.Android 中解析 json 请求的主要内容,如果未能解决你的问题,请参考以下文章

发生一个或多个错误。 (无法解析 TLS 数据包头)C# Xamarin Android Project Visual Studio

VS/Xamarin Android开发Follow Me

Xamarin.Android splash页面瞬间响应_避免APP启动闪白屏

Xamarin android:天蓝色推送通知的连接字符串无效

Xamarin.forms(或)xamarin.ios/xamarin.android(或)本机

如何在 Xamarin.android 中更改条目光标颜色