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

質問編集履歴

12

脱字

2021/03/12 01:51

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -8,7 +8,7 @@
8
8
  以下の様な,x~z座標値を格納する為のクラス(Coordinateクラスに属するPosition1~4はそれぞれx,y,z座標を複数組持つ)を定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
9
9
 
10
10
  1. この座標値は null にもなり得る予定なので,型はnull許容値型 double? としました.
11
- 値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,~~何も出力されませんでした.~~Null値となっていました.
11
+ 値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,~~何も出力されませんでした.~~**全てが**Null値となってしまいました.
12
12
  **追記:また,JSONファイル側のnullを適当な数値に書き換えてnullを含まないJSONファイルを読み込んでも,全てNullとして読み込まれました.**
13
13
 
14
14
  2. 試しに,メンバ変数x,y,zの型を通常の double としてみると,JSONで null となっている部分は0に変換されて読み込まれ,それ以外の数値は正常に読み込まれました.

11

脱字

2021/03/12 01:51

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -159,7 +159,7 @@
159
159
  ### 追記
160
160
 
161
161
  調べて見ると,「UnityのJsonUtililyがnull許容値を扱えない」という問題はあったみたいです.
162
- そもそも今回JSONでデータを読み込もうとする目的は,pythonプログラムで取得した座標をUnityへ送信したく,その際言語間のデータには一旦データをシリアル化する必要があるとの事でJSON形式を採用しました.リアルタイムなので処理は極力高速なものが良いだろうと思い,JsonUtilityを使おうとしている,という経緯でしたが…
162
+ そもそも今回JSONでデータを読み込もうとする目的は,pythonプログラムで取得した座標をUnityへ送信したく,その際言語間のデータ渡しには一旦データをシリアル化する必要があるとの事でJSON形式を採用しました.リアルタイムなので処理は極力高速なものが良いだろうと思い,JsonUtilityを使おうとしている,という経緯でしたが…
163
163
  今後はnull許容型を使わない方法か,JsonUtililyあるいはJSON形式を使わない方法を検討してみる事にします.
164
164
 
165
165
 

10

追記

2021/03/12 01:22

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -158,8 +158,11 @@
158
158
 
159
159
  ### 追記
160
160
 
161
- 調べて見ると,「UnityのJsonUtililyがnull許容値を扱えない」という問題はあったみたいです.null許容型を使わない方法か,JsonUtililyあるいはJSON形式を使わない方法を試してみます.
161
+ 調べて見ると,「UnityのJsonUtililyがnull許容値を扱えない」という問題はあったみたいです.
162
+ そもそも今回JSONでデータを読み込もうとする目的は,pythonプログラムで取得した座標をUnityへ送信したく,その際言語間のデータには一旦データをシリアル化する必要があるとの事でJSON形式を採用しました.リアルタイムなので処理は極力高速なものが良いだろうと思い,JsonUtilityを使おうとしている,という経緯でしたが…
163
+ 今後はnull許容型を使わない方法か,JsonUtililyあるいはJSON形式を使わない方法を検討してみる事にします.
162
164
 
165
+
163
166
  [Unity5.3でJsonを扱うまとめ - Qiit](https://qiita.com/toRisouP/items/53be639f267da8845a42)
164
167
  > null許容型は値が定義されていようが全てnullになってしまうみたいです
165
168
 

9

Debug.Log("pos1 x:"+item.x); →Debug.Log(item.x);に変更して試してみました.

2021/03/12 01:22

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -6,14 +6,19 @@
6
6
  ### 発生している問題・試した事
7
7
 
8
8
  以下の様な,x~z座標値を格納する為のクラス(Coordinateクラスに属するPosition1~4はそれぞれx,y,z座標を複数組持つ)を定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
9
- - この座標値は null にもなり得る予定なので,型はnull許容値型 double? としました.
10
- 値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,何も出力されませんでした.
11
9
 
10
+ 1. この座標値は null にもなり得る予定なので,型はnull許容値型 double? としました.
11
+ 値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,~~何も出力されませんでした.~~Null値となっていました.
12
- - 試しにメンバ変数x,y,zの型を通常の double としてみると,JSONnullっている部分は0されて読み込まれそれ以外の数値は正常に読み込まれました.
12
+ **追記:また,JSONファイル側のnullを適当数値書きnullを含まないJSONファイルを読み込んでも全てNullとして読み込まれました.**
13
13
 
14
+ 2. 試しに,メンバ変数x,y,zの型を通常の double としてみると,JSONで null となっている部分は0に変換されて読み込まれ,それ以外の数値は正常に読み込まれました.
15
+
16
+ **以上の事から,恐らくJsonUtilityとnull許容値型との相性が悪いのではないかと思われます.**
17
+
14
- |double?型 とした時|double型 とした時|
18
+ |1.double?型 とした時|2.double型 とした時|
15
19
  |:--:|:--:|
20
+ |全てnullとなる.**また,JSONファイルでnull値になっている部分を通常の数値に書き換えても全ても同じ.**|JSONで null の部分は0に変換され,それ以外の数値は正常に読み込まれる.|
16
- |![画像1](9dac0ec2b691ed9179c40dd5d1d19b0e.png)|![画像2](ec878b2e3291d04442e25acfa071e904.png)|
21
+ |![イメージ説明](9bcb2d775281b89dec8481e6ba16ddfc.png)|![イメージ説明](edf31b6f3e7ac8f85f2f56415922968c.png)|
17
22
 
18
23
  ### 該当のソースコード
19
24
 
@@ -55,21 +60,20 @@
55
60
  //確認の為出力すると,上手く行かない
56
61
  foreach(var item in coordinate.pos1)
57
62
  {
58
- Debug.Log("pos1 x:"+item.x);
63
+ Debug.Log(item.x);
59
64
  }
60
65
  foreach(var item in coordinate.pos2)
61
66
  {
62
- Debug.Log("pos2 x:"+item.x);
67
+ Debug.Log(item.x);
63
68
  }
64
69
  foreach(var item in coordinate.pos3)
65
70
  {
66
- Debug.Log("pos3 x:"+item.x);
71
+ Debug.Log(item.x);
67
72
  }
68
73
  foreach(var item in coordinate.pos4)
69
74
  {
70
- Debug.Log("pos4 x:"+item.x);
75
+ Debug.Log(item.x);
71
76
  }
72
- }
73
77
  void Update()
74
78
  {
75
79
  }
@@ -154,6 +158,11 @@
154
158
 
155
159
  ### 追記
156
160
 
157
- 以下のサイトにこの問題に関す記載と,解決策提示があったで試してみようと思います.
161
+ 調べて見ると,「UnityJsonUtililynull許容値を扱えない」という問題はあったみたいす.null許容型を使わない方法か,JsonUtililyあるいはJSON形式を使わない方法を試してみます.
162
+
163
+ [Unity5.3でJsonを扱うまとめ - Qiit](https://qiita.com/toRisouP/items/53be639f267da8845a42)
158
164
  > null許容型は値が定義されていようが全てnullになってしまうみたいです
165
+
166
+ [JSON Utility creates empty classes instead of null
159
- [Unity5.3でJsonを扱うまとめ - Qiit](https://qiita.com/toRisouP/items/53be639f267da8845a42)
167
+ ](https://forum.unity.com/threads/json-utility-creates-empty-classes-instead-of-null.471047/)
168
+ > null serialized classes will get filled out with default values when you deserialize them.

8

追記

2021/03/12 01:16

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -150,4 +150,10 @@
150
150
  また,UnityのProject Settings>Playerの一部項目の設定についてです.UnityもC#も全くの入門者なのでまだあまり良く理解出来ておりませんが,この部分の設定がC#で扱える機能に関わると聞いたので,ご参考になればと載せておきます.(ひょっとすると不要な情報かもしれませんが…)
151
151
  ![イメージ説明](37d719690064338b282fbde96b1faa8f.png)
152
152
 
153
- 宜しくお願い致します.
153
+ 宜しくお願い致します.
154
+
155
+ ### 追記
156
+
157
+ 以下のサイトにこの問題に関する記載と,解決策の提示があったので試してみようと思います.
158
+ > null許容型は値が定義されていようが全てnullになってしまうみたいです
159
+ [Unity5.3でJsonを扱うまとめ - Qiit](https://qiita.com/toRisouP/items/53be639f267da8845a42)

7

語彙が違った

2021/03/11 15:51

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- 【Unity C#】null許容型変数に JsonUtilityでJSONから値を読み込めない
1
+ 【Unity C#】null許容型変数に JsonUtilityでJSONから値を読み込めない
body CHANGED
@@ -1,12 +1,12 @@
1
1
  ### 実現したいこと
2
2
  お世話になっております.
3
3
 
4
- UnityのC#でJsonUtilityを使用して,null許容型の変数にJSON形式のデータから値を読み込みたいです.
4
+ UnityのC#でJsonUtilityを使用して,null許容型の変数にJSON形式のデータから値を読み込みたいです.
5
5
 
6
6
  ### 発生している問題・試した事
7
7
 
8
8
  以下の様な,x~z座標値を格納する為のクラス(Coordinateクラスに属するPosition1~4はそれぞれx,y,z座標を複数組持つ)を定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
9
- - この座標値は null にもなり得る予定なので,型はnull許容型 double? としました.
9
+ - この座標値は null にもなり得る予定なので,型はnull許容型 double? としました.
10
10
  値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,何も出力されませんでした.
11
11
 
12
12
  - 試しに,メンバ変数x,y,zの型を通常の double としてみると,JSONで null となっている部分は0に変換されて読み込まれ,それ以外の数値は正常に読み込まれました.
@@ -34,7 +34,7 @@
34
34
  public Position4[] pos4;
35
35
  }
36
36
  [System.Serializable] public class Position1
37
- { //null許容型にすると値が一切読み込まれない
37
+ { //null許容型にすると値が一切読み込まれない
38
38
  //通常のdouble型にするとJSONで数値になっている部分は正常に読み込まれ,nullになっている所は0として読み込まれる
39
39
  public double? x;
40
40
  public double? y;

6

載せたjsonファイルを間違えた

2021/03/11 14:13

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -86,7 +86,7 @@
86
86
  "z": null
87
87
  },
88
88
  {
89
- "x": 15523,
89
+ "x": -15523.5600045,
90
90
  "y": 555,
91
91
  "z": 6.66
92
92
  },

5

クラスについての説明を分かりやすくした

2021/03/11 14:09

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  ### 発生している問題・試した事
7
7
 
8
- 以下の様なx~z座標値を格納する為のクラスを定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
8
+ 以下の様なx~z座標値を格納する為のクラス(Coordinateクラスに属するPosition1~4はそれぞれx,y,z座標複数組持つ)を定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
9
9
  - この座標値は null にもなり得る予定なので,型はnull許容型 double? としました.
10
10
  値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,何も出力されませんでした.
11
11
 

4

定義したクラスについての説明が間違っていた

2021/03/11 14:03

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  namespace hoge{
28
28
 
29
- [System.Serializable] public class Coordinate //地点1~4のx,y,z座標値を格納したい
29
+ [System.Serializable] public class Coordinate //Position1~4について,複数組のx,y,z座標値を格納したい
30
30
  {
31
31
  public Position1[] pos1;
32
32
  public Position2[] pos2;

3

微修正

2021/03/11 14:00

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  以下の様なx~z座標値を格納する為のクラスを定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
9
9
  - この座標値は null にもなり得る予定なので,型はnull許容型 double? としました.
10
- 値が正しく代入されたか確認する為にUnityのコンソールに全ての地点の全ての変数xの値を出力した所,何も出力されませんでした.
10
+ 値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,何も出力されませんでした.
11
11
 
12
12
  - 試しに,メンバ変数x,y,zの型を通常の double としてみると,JSONで null となっている部分は0に変換されて読み込まれ,それ以外の数値は正常に読み込まれました.
13
13
 

2

微修正

2021/03/11 13:59

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  ### 発生している問題・試した事
7
7
 
8
- 以下の様な4地点のx~z座標値を格納する為のクラスを定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
8
+ 以下の様なx~z座標値を格納する為のクラスを定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
9
9
  - この座標値は null にもなり得る予定なので,型はnull許容型 double? としました.
10
10
  値が正しく代入されたか確認する為にUnityのコンソールに全ての地点の全ての変数xの値を出力した所,何も出力されませんでした.
11
11
 

1

微修正

2021/03/11 13:58

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -35,7 +35,7 @@
35
35
  }
36
36
  [System.Serializable] public class Position1
37
37
  { //null許容型にすると値が一切読み込まれない
38
- //通常の非許容型にするとJSONで数値になっている部分は正常に読み込まれ,nullになっている所は0として読み込まれる
38
+ //通常のdouble型にするとJSONで数値になっている部分は正常に読み込まれ,nullになっている所は0として読み込まれる
39
39
  public double? x;
40
40
  public double? y;
41
41
  public double? z;