リクエストに応じてJSONを受け取ります。シンプルな変数にアクセスしてscreen.Butで印刷することができますが、深い変数にアクセスして印刷する方法がわかりません「オファー」クラスの変数にアクセスしたいのですが、どうすればいいですか? ここに私のモデルクラスがあります。深くネストされたJSONの変数にアクセスするには
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
[Serializable]
public class Fields
{
}
[Serializable]
public class Queries
{
}
[Serializable]
public class FacetResults
{
public Fields fields;
public Queries queries;
}
[Serializable]
public class Fields2
{
}
[Serializable]
public class Facet
{
public Fields2 fields;
public List<object> queries;
}
[Serializable]
public class Fields3
{
}
[Serializable]
public class Filter
{
public Fields3 fields;
public List<object> queries;
}
[Serializable]
public class Stats
{
}
[Serializable]
public class Request
{
public string __class__;
public Facet facet;
public Filter filter;
public int limit;
public string q;
public string sortby;
public int start;
public Stats stats;
}
[Serializable]
public class Brand
{
public string __class__;
public string homepage_url ;
public string name ;
public string uid ;
}
[Serializable]
public class Manufacturer
{
public string __class__ ;
public string homepage_url ;
public string name ;
public string uid ;
}
[Serializable]
public class Prices
{
public List<List<object>> USD ;
public List<List<object>> GBP ;
public List<List<object>> INR ;
public List<List<object>> CNY ;
public List<List<object>> EUR ;
public List<List<object>> JPY ;
}
[Serializable]
public class Seller
{
public string __class__;
public string display_flag ;
public bool has_ecommerce;
public string homepage_url;
public string id ;
public string name ;
public string uid ;
}
[Serializable]
public class Offer
{
public string __class__ ;
public string _naive_id ;
public string eligible_region;
public int? factory_lead_days;
public int? factory_order_multiple;
public int in_stock_quantity ;
public bool is_authorized ;
public bool is_realtime ;
public string last_updated;
public int moq ;
public object octopart_rfq_url;
public string on_order_eta ;
public int? on_order_quantity ;
public int? order_multiple ;
public string packaging ;
public Prices prices ;
public string product_url ;
public Seller seller ;
public string sku;
}
[Serializable]
public class Item
{
public string __class__ ;
public Brand brand ;
public Manufacturer manufacturer ;
public string mpn ;
public string octopart_url ;
public List<Offer> offers ;
public List<string> redirected_uids ;
public string uid ;
}
[Serializable]
public class Result
{
public string __class__ ;
public Item item ;
public string snippet ;
}
[Serializable]
public class SpecMetadata
{
}
[Serializable]
public class StatsResults
{
}
[Serializable]
public class RootOb
{
public string __class__ ;
public FacetResults facet_results;
public int hits ;
public int msec ;
public Request request;
public List<Result> results;
public SpecMetadata spec_metadata;
public StatsResults stats_results;
public string user_country ;
public string user_currency ;
}
ここに私がアクセスしたいクラスがあります。
namespace OctopartApi
{
using Newtonsoft.Json;
using RestSharp;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine;
using System.Net;
using UnityEngine.UI;
public class KeywordSearch1 : MonoBehaviour
{
public InputField mainInputField;
public Canvas can;
public Text parts,package,pin,dersc;
public float x, y;
void Start() {
mainInputField.onEndEdit.AddListener(delegate {LockInput(mainInputField); });
}
void LockInput(InputField input)
{
ExecuteSearch (input.text);
}
public void ExecuteSearch(string inp)
{
// -- your search query --
string query = inp;
string octopartUrlBase = "http://octopart.com/api/v3";
string octopartUrlEndpoint = "parts/search";
string apiKey = "57af648b";
// Create the search request
var client = new RestClient(octopartUrlBase);
var req = new RestRequest(octopartUrlEndpoint, Method.GET)
.AddParameter("apikey", apiKey)
.AddParameter("q", query)
.AddParameter("start", "0")
.AddParameter("limit", "10");
var resp = client.Execute(req);
string octojson = resp.Content;
RootOb rr = JsonUtility.FromJson<RootOb> (octojson);
Debug.Log (rr.hits);
printingPress (rr.results);
parts.horizontalOverflow = HorizontalWrapMode.Wrap;
parts.verticalOverflow = VerticalWrapMode.Overflow;
}
public void printingPress(List<Result> reslt)
{
for (var i = 0; i < reslt.Count; i++) {
parts.text = parts.text+reslt [i].item.brand.name+"\n";
}
}
private const string APIKEY = "57af648b";
}
}
私のJSONはそうここに掲載するには大きすぎる、ここではそれへのリンクは次のとおりです。https://octopart.com/api/docs/v3/search-tutorial
大丈夫です。私はあなたに借りができた :)。どうもありがとう。 。私は今それを試してみる –
YEs、それは 'result.count'です。私は内側のループで間違いを犯しました。これは 'item.offers.Count'でなければなりません。最後のループサンプルで私のEDITを参照してください。そのループコードにさらにコメントを追加しました。 – Programmer
今、完璧に動作します:) –