从API获取Json数据并在Unity C中仅显示部分json#

问题描述 投票:0回答:3

我无法从this API获得价格。我不需要所有来自网址的JSON,我只需要"rate":"3,394.2033"部分。

数据API:

{
  "time": {
    "updated": "Feb 6, 2019 22:02:00 UTC",
    "updatedISO": "2019-02-06T16:02:00-06:00",
    "updateduk": "Feb 6, 2019 at 22:02 GMT"
  },
  "disclaimer": "This data was produced from the CoinDesk Bitcoin Price Index (USD). Non-USD currency data converted using hourly conversion rate from openexchangerates.org",
  "bpi": {
    "USD": {
      "code": "USD",
      "rate": "3,394.2033",
      "description": "United States Dollar",
      "rate_float": 3394.2033
    },
    "XBT": {
      "code": "XBT",
      "rate": "1.0000",
      "description": "Bitcoin",
      "rate_float": 1
    }
  }
}

我的代码:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class API : MonoBehaviour
{
    private string www = 
    "https://api.coindesk.com/v1/bpi/currentprice/XBT.json";
    public Text responseText;

    public void Request()
    {
        WWW request = new WWW(www);
        StartCoroutine(OnResponse(request));
    }
    private IEnumerator OnResponse(WWW req)
    {
        yield return req;

        responseText.text = req.text;
    }
}

这个脚本允许我提取所有JSON数据,但我只需要"rate":"3,394.2033"。更具体地说,只是值3,394.2033

c# json api unity3d json.net
3个回答
1
投票

使用Json.Net的LINQ-to-JSON API(JTokens),您可以使用一行代码执行此操作:

var rate = (string)JToken.Parse(json).SelectToken("bpi.USD.rate");

小提琴:https://dotnetfiddle.net/Krgejr


0
投票

您可以使用newtonsoft并在此处遵循此示例:https://www.newtonsoft.com/json/help/html/SerializingJSONFragments.htm

public class SearchResult
{
    public string Rate { get; set; }
}


JObject rateSearch = JObject.Parse(MyJsonText);

// get JSON result objects into a list
IList<JToken> results = rateSearch ["bpi"]["USD"].Children().ToList();

// serialize JSON results into .NET objects
IList<SearchResult> searchResults = new List<SearchResult>();
foreach (JToken result in results)
{
    // JToken.ToObject is a helper method that uses JsonSerializer internally
    SearchResult searchResult = result.ToObject<SearchResult>();
    searchResults.Add(searchResult);
}

0
投票

你也可以使用来自Unity社区的古老而金色的SimpleJSON

要在Unity中使用SimpleJSON,您只需将SimpleJSON.cs文件复制到assets文件夹中的项目“plugins”文件夹中即可。

并做例如

var json = JSON.Parse(req.text);
var yourText = json["bpi"]["USD"]["rate"];

注意调试

如果找不到给定的键与您期望的相反,则返回null而不是抛出异常。

© www.soinside.com 2019 - 2024. All rights reserved.