質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

2139閲覧

unityでjsonの項目を抽出したい

PTK

総合スコア29

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2021/10/23 08:08

unityでjsonをwebからダウンロードして一部項目を抜き出したいのですが、一つはできましたが、もう一つの項目は配列型ではないからか取得が難しいです。ネットで調べてみましたが、unityでjsonを抜き出す事についての分かりやすい記事がすくなく今のコードでもなぜ一つは項目が抜き出せているのかもよくわからない状況です。jsonファイルの取り扱いに詳しい方がいましたら、ご教示ください。よろしくお願いします。

c#

1using System; 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5[Serializable] 6public class InputJson 7{ 8 public AAA[] weather; 9 10} 11[Serializable] 12public class AAA 13{ 14 public string main; 15 16} 17public class weather : MonoBehaviour{ 18 public string tenki; 19 public string kion; 20void Start(){ 21 var request = UnityEngine.Networking.UnityWebRequest.Get(inURL); 22 //通信待ち 23 yield return request.SendWebRequest(); 24 //エラーが発生したか 25 if (request.isHttpError || request.isNetworkError) 26 { 27 //エラー内容 28 print(request.error); 29 } 30 else 31 { 32 //結果 33 34 string we1 = request.downloadHandler.text; 35 InputJson inputJson = JsonUtility.FromJson<InputJson>(we1); 36 37 tenki = inputJson.weather[0].main; 38 print(tenki); 39 40 } 41 42 } 43} 44

こちらがjsonファイルです。

json

1{"coord":{"lon":140,"lat":36},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01d"}],"base":"stations","main":{"temp":289.33,"feels_like":287.92,"temp_min":288.29,"temp_max":290.94,"pressure":1021,"humidity":35,"sea_level":1021,"grnd_level":1020},"visibility":10000,"wind":{"speed":3.01,"deg":351,"gust":4.5},"clouds":{"all":2},"dt":1634975506,"sys":{"type":2,"id":60940,"country":"JP","sunrise":1634936009,"sunset":1634975697},"timezone":32400,"id":1856881,"name":"Mitsukaidō","cod":200}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

開発環境、デシリアライザに何を使えるのか不明ですが・・・(質問に書きましょう)

Visual Studio を使えるなら、JSON 文字列から C# のクラス定義を生成できます。詳しくは以下の記事を見てください。

JSON 文字列から C# のクラス定義生成
http://surferonwww.info/BlogEngine/post/2020/05/10/generate-class-definition-from-json-string.aspx

あとは、Newtonsoft.Json などを使って JSON 文字列をデシリアライズしてそれらのクラスのオブジェクトを生成できますので、それから必要な項目は容易に取得できるはずです。

ちなみに、質問に書いてあった JSON 文字列から上に紹介した Visual Studio の機能を使って C# のクラス定義を生成すると以下のようになります。

public class Rootobject { public Coord coord { get; set; } public Weather[] weather { get; set; } public string _base { get; set; } public Main main { get; set; } public int visibility { get; set; } public Wind wind { get; set; } public Clouds clouds { get; set; } public int dt { get; set; } public Sys sys { get; set; } public int timezone { get; set; } public int id { get; set; } public string name { get; set; } public int cod { get; set; } } public class Coord { public int lon { get; set; } public int lat { get; set; } } public class Main { public float temp { get; set; } public float feels_like { get; set; } public float temp_min { get; set; } public float temp_max { get; set; } public int pressure { get; set; } public int humidity { get; set; } public int sea_level { get; set; } public int grnd_level { get; set; } } public class Wind { public float speed { get; set; } public int deg { get; set; } public float gust { get; set; } } public class Clouds { public int all { get; set; } } public class Sys { public int type { get; set; } public int id { get; set; } public string country { get; set; } public int sunrise { get; set; } public int sunset { get; set; } } public class Weather { public int id { get; set; } public string main { get; set; } public string description { get; set; } public string icon { get; set; } }

投稿2021/10/23 08:50

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

https://qiita.com/lycoris102/items/a6ddc468575b624b2630
こちらのサイトに詳しいことが載っていました。

投稿2021/10/23 08:49

PTK

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問