sách gpt4 ăn đã đi

c# - 如何从 JToken 获取字符串值

In lại 作者:太空狗 更新时间:2023-10-29 20:20:00 27 4
mua khóa gpt4 giày nike

我从返回 JSON 响应的 Web 服务获取数据。这是我的代码:

WebClient client = new WebClient();
var result = client.DownloadString("http://some url");

JObject obj = JObject.Parse(result);

// Location l = new Location();
// l.city = obj["ad"][2]; error here

此时它返回了一个结果,但是我得到了一个错误:

Cannot implicitly convert type 'Newtonsoft.Json.Linq.JToken' to 'string'

我需要一些帮助,将返回的数据放入模型中的变量中。

这是我的 JSON:

{
data: [
{
address_obj: {
street1: "9518 Front Beach Road",
street2: "",
city: "Panama City Beach",
state: "Florida",
country: "United States",
postalcode: "32407",
address_string: "9518 Front Beach Road, Panama City Beach, FL 32407"
},

câu trả lời hay nhất

JSON 表示包含 dữ liệu 的外部对象对象数组,每个项目包含一个 address_obj然后具有字符串属性的对象。所以 JToken您使用的索引器语法必须匹配该层次结构,包括使用正确的属性名称。此外,当从 JToken 中检索值时您需要将其转换为正确的类型。

你可以这样得到城市,其中Tôi是你想要的位置的索引:

l.city = (string)obj["data"][i]["address_obj"]["city"];

但是,如果您所做的只是填充模型对象,那么使用 JsonConvert.DeserializeObject 直接反序列化可能会更简单。而不是使用 JTokens 手动填充它们.例如,如果您的类定义如下:

public class RootObject
{
[JsonProperty("data")]
public List Data { get; set; }
}

public class Item
{
[JsonProperty("address_obj")]
public Location Location { get; set; }
}

public class Location
{
[JsonProperty("street1")]
public string Street1 { get; set; }
[JsonProperty("street2")]
public string Street2 { get; set; }
[JsonProperty("city")]
public string City { get; set; }
[JsonProperty("state")]
public string State { get; set; }
[JsonProperty("country")]
public string Country { get; set; }
[JsonProperty("postalcode")]
public string PostalCode { get; set; }
[JsonProperty("address_string")]
public string FullAddress { get; set; }
}

然后你可以像这样直接反序列化它们:

RootObject obj = JsonConvert.DeserializeObject(result);

关于c# - 如何从 JToken 获取字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33754692/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress