gpt4 book ai didi

c# - 无法仅在 Windows Phone 上读取具有值的 json 数组

转载 作者:太空宇宙 更新时间:2023-11-03 13:50:12 25 4
gpt4 key购买 nike

现在我有了这个 JSON:

[
"bekasi",
"bekasi barat",
"bekasi selatan",
"bekasi timur",
"bekasi utara",
"serang bekasi"
]

我不知道如何制作解析器类。我尝试了在线 json 到 c# 类生成器,但它无济于事。所以我尝试了这个:

[DataContract]
public class kota
{
[DataMember]
public string kotanya { get; set; }

}

还有这个

public static kota eks; // I also tried  public static kota[] eks;

public void mulai()
{
string eksp = "http://www.ongkoskirim.com/api/0.2/?id=OAL66afd139a386fee6dc5a5597abd7daba&q=city&s=bek";

WebClient client = new WebClient();
client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
client.OpenReadAsync(new Uri(eksp), UriKind.Absolute);
}

void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
try
{
var ser = new DataContractJsonSerializer(typeof(kota)); //and I have tried typeof(IEnumerable<kota>)
System.Diagnostics.Debug.WriteLine("sini");
eks = (kota)ser.ReadObject(e.Result); //I also tried (kota[])ser.ReadObject(e.Result);
System.Diagnostics.Debug.WriteLine("sana");
List<string> temp = new List<string>();
temp.Add("Semua");
System.Diagnostics.Debug.WriteLine("list");
for (int i = 0; i < 3; i++)
{
System.Diagnostics.Debug.WriteLine(eks.kotanya[i]);

}

}
catch (Exception ex)
{

System.Diagnostics.Debug.WriteLine(ex.Message);
System.Diagnostics.Debug.WriteLine(ex.StackTrace);
}
}

但我总是得到 invalidCastException。谁能帮帮我?

最佳答案

您不需要任何额外的类,因为您的 JSON 是简单的字符串数组:

var ser = new DataContractJsonSerializer(typeof(string[]));
var items = (string[]) ser.ReadObject(e.Result);

在您的 JSON 变得更加复杂之前,我不会涉及专用类,但是您可以轻松构建 kota 实例列表:

var kotas = items.Select(i => new kota { kotanya = i }).ToList();

旁注,如果您打算进行更多 JSON 反序列化/序列化,我建议您看一下 JSON.NET library .

关于c# - 无法仅在 Windows Phone 上读取具有值的 json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13900230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com