【问题标题】:How can I read a JSON array in c# [duplicate]如何在 C# 中读取 JSON 数组 [重复]
【发布时间】:2018-01-05 15:00:56
【问题描述】:

我有这个 JSON 数组,我从 here 得到它。 我想从中提取一些硬币价格。 这是我想要的: 比特币价格:15000$ 瑞波币价格:3 美元 如何在 c# 中实现这一点?

[
{
    "id": "bitcoin", 
    "name": "Bitcoin", 
    "symbol": "BTC", 
    "rank": "1", 
    "price_usd": "15235.5", 
    "price_btc": "1.0", 
    "24h_volume_usd": "17910600000.0", 
    "market_cap_usd": "255647119350", 
    "available_supply": "16779700.0", 
    "total_supply": "16779700.0", 
    "max_supply": "21000000.0", 
    "percent_change_1h": "0.36", 
    "percent_change_24h": "8.91", 
    "percent_change_7d": "-3.41", 
    "last_updated": "1514994260"
}, 
{
    "id": "ripple", 
    "name": "Ripple", 
    "symbol": "XRP", 
    "rank": "2", 
    "price_usd": "2.88573", 
    "price_btc": "0.00019146", 
    "24h_volume_usd": "4799670000.0", 
    "market_cap_usd": "111790712459", 
    "available_supply": "38739144847.0", 
    "total_supply": "99993093880.0", 
    "max_supply": "100000000000", 
    "percent_change_1h": "0.88", 
    "percent_change_24h": "19.54", 
    "percent_change_7d": "120.16", 
    "last_updated": "1514994241"
}
]

【问题讨论】:

  • 使用 newtonsoft.json 将数据导入列表,然后像往常一样遍历列表。你坚持哪一点?
  • 请做你的研究,有几个问题完全回答了满足这个问题的要求。

标签: c# json xamarin


【解决方案1】:

使用Newtonsoft.net解析JSON数据。

var obj = JsonConvert.DeserializeObject(json);

你可以创建类来保存数据

Class CryptoCurrencyDetails{

 public String id {get; set;}
 public String name{get; set;}
 public String symbol{get; set;}
    .
    .
    .

public String last_updated{get; set;}
}

然后您可以通过以下方式将您的 JSON 数组转换为 C# 列表:

List<CryptoCurrencyDetails> list = JsonConvert.DeserializeObject<List<CryptoCurrencyDetails>>(json);

【讨论】:

    【解决方案2】:

    我建议你使用一个对象来映射这个数组,例如:

    [DataContract]
    public class CryptoCurrencyData
    {
        [DataMember(Name ="id")]
        public int Id { get; set; }
        //One property for each Json array member
    }
    

    然后像这样使用 Json 序列化器:

    using (MemoryStream myMemoryStream = new MemoryStream(Encoding.Unicode.GetBytes(jsonArrayString)))
    {
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(CryptoCurrencyData));
        return (CryptoCurrencyData)serializer.ReadObject(myMemoryStream);
    } 
    

    【讨论】:

    • DataContractJsonSerializer 与 Newtonsoft 相比相形见绌。不推荐使用它。
    • OP有一个数组,这段代码只会读取一个项目。
    • @Amy 你说得对,我没有看到 Xamarin 标签...
    • @SunPaz 该标签不相关。 DataContractJsonSerializer 在任何地方都比 Newtonsoft 性能更差,功能也更少。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多