質問するログイン新規登録

回答編集履歴

7

シリアライズではなくデシリアライズ。+誤字修正

2019/02/25 02:47

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  詳細については以下に記載しますので、ご参考にしてください。
11
11
 
12
- Json.NETで提示されたJsonコードをC#で取り扱う場合はJsonの構造に合わせてクラスの定義を行います。
12
+ Json.NETで提示されたJsonコードを取り扱う場合はJsonの構造に合わせてクラスの定義を行います。
13
13
  ([json2csharp](http://json2csharp.com/)というサイトでクラス定義に変換しました)
14
14
  ```C#
15
15
  public class Min
@@ -53,7 +53,7 @@
53
53
  }
54
54
  ```
55
55
 
56
- あとはJsonを`Forecast`または`RootObject`クラスのインスタンスとして取り込み、メンバーにアクセスすれば良いです。インスタンスとして取り込むことをシリアライズって言います。
56
+ あとはJsonを`Forecast`または`RootObject`クラスのインスタンスとして取り込み、メンバーにアクセスすれば良いです。インスタンスとして取り込むことをシリアライズって言います。
57
57
 
58
58
  コード例は次になります。
59
59
 

6

表記揺れが気になりました

2019/02/25 02:47

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -4,12 +4,12 @@
4
4
  0. zipファイルを解凍して「Bin\Net20\Newtonsoft.json.dll」をUnityのPluginsフォルダにコピー
5
5
 
6
6
  準備が出来次第、次の手順を行います。
7
- 0. jsonに対応するオブジェクトの定義
7
+ 0. Jsonに対応するオブジェクトの定義
8
- 0. json-オブジェクト間の変換(シリアライズ・デシリアライズ)を行い取得したデータにアクセスする
8
+ 0. Json-オブジェクト間の変換(シリアライズ・デシリアライズ)を行い取得したデータにアクセスする
9
9
 
10
10
  詳細については以下に記載しますので、ご参考にしてください。
11
11
 
12
- Json.NETで、提示されたjsonコードをC#で取り扱う場合はJsonの構造に合わせてクラスの定義を行います。
12
+ Json.NETで、提示されたJsonコードをC#で取り扱う場合はJsonの構造に合わせてクラスの定義を行います。
13
13
  ([json2csharp](http://json2csharp.com/)というサイトでクラス定義に変換しました)
14
14
  ```C#
15
15
  public class Min

5

類似質問と書いたものは、あまり類似してなかったので消しました。

2019/02/21 05:07

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -71,5 +71,4 @@
71
71
  ```
72
72
 
73
73
  参考:[UnityでJson.NETを使う](http://spi8823.hatenablog.com/entry/2016/04/16/001641)
74
- 類似質問:[Unityのc#でJsonのデータをデシリアライズしたいのですがうまくできずに困っております](https://teratail.com/questions/70446)
75
74
  他のライブラリ:[[C#] C#でJSONを扱う方法まとめ](https://dev.classmethod.jp/etc/c-sharp-json/)

4

表現の訂正

2019/02/21 05:05

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -1,13 +1,13 @@
1
- C#でJsonを取り扱うのであれば、Json.NET等のライブラリを使うことが基本と思います。
1
+ C#でJsonを取り扱うのであれば、Json.NET等のライブラリを使うことが基本的に多いと思います。
2
- 環境準備ため以下の手順が必要になります。
2
+ 環境準備するため以下の手順が必要になります。
3
3
  0. http://www.newtonsoft.com/jsonへ行って、zipをダウンロード
4
4
  0. zipファイルを解凍して「Bin\Net20\Newtonsoft.json.dll」をUnityのPluginsフォルダにコピー
5
5
 
6
- 準備が出来ましたら、次の工程行います。
6
+ 準備が出来次第、次の手順を行います。
7
7
  0. jsonに対応するオブジェクトの定義
8
8
  0. json-オブジェクト間の変換(シリアライズ・デシリアライズ)を行い取得したデータにアクセスする
9
9
 
10
- 詳細について以下に書きますので、ご参考にしてください。
10
+ 詳細について以下に記載しますので、ご参考にしてください。
11
11
 
12
12
  Json.NETで、提示されたjsonコードをC#で取り扱う場合はJsonの構造に合わせてクラスの定義を行います。
13
13
  ([json2csharp](http://json2csharp.com/)というサイトでクラス定義に変換しました)

3

誤字

2019/02/21 04:20

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -7,7 +7,7 @@
7
7
  0. jsonに対応するオブジェクトの定義
8
8
  0. json-オブジェクト間の変換(シリアライズ・デシリアライズ)を行い取得したデータにアクセスする
9
9
 
10
- 詳細について以下に書きますので、ご参考ください。
10
+ 詳細について以下に書きますので、ご参考にしてください。
11
11
 
12
12
  Json.NETで、提示されたjsonコードをC#で取り扱う場合はJsonの構造に合わせてクラスの定義を行います。
13
13
  ([json2csharp](http://json2csharp.com/)というサイトでクラス定義に変換しました)

2

文法の修正と少し補足

2019/02/21 04:18

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -1,12 +1,14 @@
1
- UnityでJsonを取り扱うのであれば、Json.NET等のライブラリを使うことが基本かと思います。
1
+ C#でJsonを取り扱うのであれば、Json.NET等のライブラリを使うことが基本かと思います。
2
-
2
+ 環境準備のため以下の手順が必要になります。
3
3
  0. http://www.newtonsoft.com/jsonへ行って、zipをダウンロード
4
4
  0. zipファイルを解凍して「Bin\Net20\Newtonsoft.json.dll」をUnityのPluginsフォルダにコピー
5
5
 
6
+ 準備が出来ましたら、次の工程行います。
6
- 参考:[UnityでJson.NETを使う](http://spi8823.hatenablog.com/entry/2016/04/16/001641)
7
+ 0. jsonに対応するオブジェクトの定義
7
- 類似質問:[Unityc#でJsonのータをデシリアライズしたいのですがうまくできず困っておりま](https://teratail.com/questions/70446)
8
+ 0. json-オブジェクト間変換(シリアライズ・デシリアライズ)を行い取得したデータアクセス
8
- 他のライブラリ:[[C#] C#でJSONを扱う方法まとめ](https://dev.classmethod.jp/etc/c-sharp-json/)
9
9
 
10
+ 詳細について以下に書きますので、ご参考ください。
11
+
10
12
  Json.NETで、提示されたjsonコードをC#で取り扱う場合はJsonの構造に合わせてクラスの定義を行います。
11
13
  ([json2csharp](http://json2csharp.com/)というサイトでクラス定義に変換しました)
12
14
  ```C#
@@ -51,7 +53,7 @@
51
53
  }
52
54
  ```
53
55
 
54
- あとはjsonを`Forecast`または`RootObject`クラスのインスタンスとして取り込み、メンバーにアクセスすれば良いです。インスタンスとして取り込むことをシリアライズなんて言ったりします。
56
+ あとはJsonを`Forecast`または`RootObject`クラスのインスタンスとして取り込み、メンバーにアクセスすれば良いです。インスタンスとして取り込むことをシリアライズて言ます。
55
57
 
56
58
  コード例は次になります。
57
59
 
@@ -66,4 +68,8 @@
66
68
  Console.WriteLine(obj.forecasts.First().temperature.min.fahrenheit);
67
69
  }
68
70
  }
69
- ```
71
+ ```
72
+
73
+ 参考:[UnityでJson.NETを使う](http://spi8823.hatenablog.com/entry/2016/04/16/001641)
74
+ 類似質問:[Unityのc#でJsonのデータをデシリアライズしたいのですがうまくできずに困っております](https://teratail.com/questions/70446)
75
+ 他のライブラリ:[[C#] C#でJSONを扱う方法まとめ](https://dev.classmethod.jp/etc/c-sharp-json/)

1

コード例を追加

2019/02/21 04:16

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -5,4 +5,65 @@
5
5
 
6
6
  参考:[UnityでJson.NETを使う](http://spi8823.hatenablog.com/entry/2016/04/16/001641)
7
7
  類似質問:[Unityのc#でJsonのデータをデシリアライズしたいのですがうまくできずに困っております](https://teratail.com/questions/70446)
8
- 他のライブラリ:[[C#] C#でJSONを扱う方法まとめ](https://dev.classmethod.jp/etc/c-sharp-json/)
8
+ 他のライブラリ:[[C#] C#でJSONを扱う方法まとめ](https://dev.classmethod.jp/etc/c-sharp-json/)
9
+
10
+ Json.NETで、提示されたjsonコードをC#で取り扱う場合はJsonの構造に合わせてクラスの定義を行います。
11
+ ([json2csharp](http://json2csharp.com/)というサイトでクラス定義に変換しました)
12
+ ```C#
13
+ public class Min
14
+ {
15
+ public string celsius { get; set; }
16
+ public string fahrenheit { get; set; }
17
+ }
18
+
19
+ public class Max
20
+ {
21
+ public string celsius { get; set; }
22
+ public string fahrenheit { get; set; }
23
+ }
24
+
25
+ public class Temperature
26
+ {
27
+ public Min min { get; set; }
28
+ public Max max { get; set; }
29
+ }
30
+
31
+ public class Image
32
+ {
33
+ public int width { get; set; }
34
+ public string url { get; set; }
35
+ public string title { get; set; }
36
+ public int height { get; set; }
37
+ }
38
+
39
+ public class Forecast
40
+ {
41
+ public string dateLabel { get; set; }
42
+ public string telop { get; set; }
43
+ public string date { get; set; }
44
+ public Temperature temperature { get; set; }
45
+ public Image image { get; set; }
46
+ }
47
+
48
+ public class RootObject
49
+ {
50
+ public List<Forecast> forecasts { get; set; }
51
+ }
52
+ ```
53
+
54
+ あとはjsonを`Forecast`または`RootObject`クラスのインスタンスとして取り込み、メンバーにアクセスすれば良いです。インスタンスとして取り込むことをシリアライズなんて言ったりします。
55
+
56
+ コード例は次になります。
57
+
58
+ ```C#
59
+ public void Hoge(){
60
+ using (var sr = new StreamReader(jsonファイルのパス, Encoding.UTF8))
61
+ {
62
+ var data = sr.ReadToEnd();
63
+ var obj = JsonConvert.DeserializeObject<RootObject>(data);
64
+
65
+ //temperatureの中のminの中のfahrenheitを取得
66
+ Console.WriteLine(obj.forecasts.First().temperature.min.fahrenheit);
67
+ }
68
+ }
69
+ ```