質問編集履歴

12

脱字

2021/03/12 01:51

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  1. この座標値は null にもなり得る予定なので,型はnull許容値型 double? としました.
20
20
 
21
- 値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,~~何も出力されませんでした.~~Null値となっていました.
21
+ 値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,~~何も出力されませんでした.~~**全てが**Null値となってしまいました.
22
22
 
23
23
  **追記:また,JSONファイル側のnullを適当な数値に書き換えてnullを含まないJSONファイルを読み込んでも,全てNullとして読み込まれました.**
24
24
 

11

脱字

2021/03/12 01:51

投稿

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

10

追記

2021/03/12 01:22

投稿

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

9

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

2021/03/12 01:22

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -14,21 +14,31 @@
14
14
 
15
15
  以下の様な,x~z座標値を格納する為のクラス(Coordinateクラスに属するPosition1~4はそれぞれx,y,z座標を複数組持つ)を定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
16
16
 
17
+
18
+
17
- - この座標値は null にもなり得る予定なので,型はnull許容値型 double? としました.
19
+ 1. この座標値は null にもなり得る予定なので,型はnull許容値型 double? としました.
18
-
20
+
19
- 値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,何も出力されませんでした.
21
+ 値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,~~何も出力されませんでした.~~Null値となっていました.
22
+
20
-
23
+ **追記:また,JSONファイル側のnullを適当な数値に書き換えてnullを含まないJSONファイルを読み込んでも,全てNullとして読み込まれました.**
21
-
22
-
24
+
25
+
26
+
23
- - 試しに,メンバ変数x,y,zの型を通常の double としてみると,JSONで null となっている部分は0に変換されて読み込まれ,それ以外の数値は正常に読み込まれました.
27
+ 2. 試しに,メンバ変数x,y,zの型を通常の double としてみると,JSONで null となっている部分は0に変換されて読み込まれ,それ以外の数値は正常に読み込まれました.
28
+
29
+
30
+
24
-
31
+ **以上の事から,恐らくJsonUtilityとnull許容値型との相性が悪いのではないかと思われます.**
25
-
26
-
32
+
33
+
34
+
27
- |double?型 とした時|double型 とした時|
35
+ |1.double?型 とした時|2.double型 とした時|
28
36
 
29
37
  |:--:|:--:|
30
38
 
39
+ |全てnullとなる.**また,JSONファイルでnull値になっている部分を通常の数値に書き換えても全ても同じ.**|JSONで null の部分は0に変換され,それ以外の数値は正常に読み込まれる.|
40
+
31
- |![画像1](9dac0ec2b691ed9179c40dd5d1d19b0e.png)|![画像2](ec878b2e3291d04442e25acfa071e904.png)|
41
+ |![イメージ説明](9bcb2d775281b89dec8481e6ba16ddfc.png)|![イメージ説明](edf31b6f3e7ac8f85f2f56415922968c.png)|
32
42
 
33
43
 
34
44
 
@@ -112,7 +122,7 @@
112
122
 
113
123
  {
114
124
 
115
- Debug.Log("pos1 x:"+item.x);
125
+ Debug.Log(item.x);
116
126
 
117
127
  }
118
128
 
@@ -120,7 +130,7 @@
120
130
 
121
131
  {
122
132
 
123
- Debug.Log("pos2 x:"+item.x);
133
+ Debug.Log(item.x);
124
134
 
125
135
  }
126
136
 
@@ -128,7 +138,7 @@
128
138
 
129
139
  {
130
140
 
131
- Debug.Log("pos3 x:"+item.x);
141
+ Debug.Log(item.x);
132
142
 
133
143
  }
134
144
 
@@ -136,18 +146,16 @@
136
146
 
137
147
  {
138
148
 
139
- Debug.Log("pos4 x:"+item.x);
149
+ Debug.Log(item.x);
140
150
 
141
151
  }
142
152
 
153
+ void Update()
154
+
155
+ {
156
+
143
157
  }
144
158
 
145
- void Update()
146
-
147
- {
148
-
149
- }
150
-
151
159
  }
152
160
 
153
161
  }
@@ -310,8 +318,18 @@
310
318
 
311
319
 
312
320
 
313
- 以下のサイトにこの問題に関す記載と,解決策提示があったで試してみようと思います.
321
+ 調べて見ると,「UnityJsonUtililynull許容値を扱えない」という問題はあったみたいす.null許容型を使わない方法か,JsonUtililyあるいはJSON形式を使わない方法を試してみます.
322
+
323
+
324
+
325
+ [Unity5.3でJsonを扱うまとめ - Qiit](https://qiita.com/toRisouP/items/53be639f267da8845a42)
314
326
 
315
327
  > null許容型は値が定義されていようが全てnullになってしまうみたいです
316
328
 
329
+
330
+
331
+ [JSON Utility creates empty classes instead of null
332
+
317
- [Unity5.3でJsonを扱うまとめ - Qiit](https://qiita.com/toRisouP/items/53be639f267da8845a42)
333
+ ](https://forum.unity.com/threads/json-utility-creates-empty-classes-instead-of-null.471047/)
334
+
335
+ > null serialized classes will get filled out with default values when you deserialize them.

8

追記

2021/03/12 01:16

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -303,3 +303,15 @@
303
303
 
304
304
 
305
305
  宜しくお願い致します.
306
+
307
+
308
+
309
+ ### 追記
310
+
311
+
312
+
313
+ 以下のサイトにこの問題に関する記載と,解決策の提示があったので試してみようと思います.
314
+
315
+ > null許容型は値が定義されていようが全てnullになってしまうみたいです
316
+
317
+ [Unity5.3でJsonを扱うまとめ - Qiit](https://qiita.com/toRisouP/items/53be639f267da8845a42)

7

語彙が違った

2021/03/11 15:51

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 【Unity C#】null許容型変数に JsonUtilityでJSONから値を読み込めない
1
+ 【Unity C#】null許容型変数に JsonUtilityでJSONから値を読み込めない
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- UnityのC#でJsonUtilityを使用して,null許容型の変数にJSON形式のデータから値を読み込みたいです.
7
+ UnityのC#でJsonUtilityを使用して,null許容型の変数にJSON形式のデータから値を読み込みたいです.
8
8
 
9
9
 
10
10
 
@@ -14,7 +14,7 @@
14
14
 
15
15
  以下の様な,x~z座標値を格納する為のクラス(Coordinateクラスに属するPosition1~4はそれぞれx,y,z座標を複数組持つ)を定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
16
16
 
17
- - この座標値は null にもなり得る予定なので,型はnull許容型 double? としました.
17
+ - この座標値は null にもなり得る予定なので,型はnull許容型 double? としました.
18
18
 
19
19
  値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,何も出力されませんでした.
20
20
 
@@ -70,7 +70,7 @@
70
70
 
71
71
  [System.Serializable] public class Position1
72
72
 
73
- { //null許容型にすると値が一切読み込まれない
73
+ { //null許容型にすると値が一切読み込まれない
74
74
 
75
75
  //通常のdouble型にするとJSONで数値になっている部分は正常に読み込まれ,nullになっている所は0として読み込まれる
76
76
 

6

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

2021/03/11 14:13

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -174,7 +174,7 @@
174
174
 
175
175
  {
176
176
 
177
- "x": 15523,
177
+ "x": -15523.5600045,
178
178
 
179
179
  "y": 555,
180
180
 

5

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

2021/03/11 14:09

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
 
15
- 以下の様なx~z座標値を格納する為のクラスを定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
15
+ 以下の様なx~z座標値を格納する為のクラス(Coordinateクラスに属するPosition1~4はそれぞれx,y,z座標複数組持つ)を定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
16
16
 
17
17
  - この座標値は null にもなり得る予定なので,型はnull許容型 double? としました.
18
18
 

4

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

2021/03/11 14:03

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -54,7 +54,7 @@
54
54
 
55
55
 
56
56
 
57
- [System.Serializable] public class Coordinate //地点1~4のx,y,z座標値を格納したい
57
+ [System.Serializable] public class Coordinate //Position1~4について,複数組のx,y,z座標値を格納したい
58
58
 
59
59
  {
60
60
 

3

微修正

2021/03/11 14:00

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  - この座標値は null にもなり得る予定なので,型はnull許容型 double? としました.
18
18
 
19
- 値が正しく代入されたか確認する為にUnityのコンソールに全ての地点の全ての変数xの値を出力した所,何も出力されませんでした.
19
+ 値が正しく代入されたか確認する為にUnityのコンソールに全てのxの値を出力した所,何も出力されませんでした.
20
20
 
21
21
 
22
22
 

2

微修正

2021/03/11 13:59

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
 
15
- 以下の様な4地点のx~z座標値を格納する為のクラスを定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
15
+ 以下の様なx~z座標値を格納する為のクラスを定義し,空のインスタンスを作成してから,JsonUtility.FromJsonOverwrite により値を上書きしようとしています.
16
16
 
17
17
  - この座標値は null にもなり得る予定なので,型はnull許容型 double? としました.
18
18
 

1

微修正

2021/03/11 13:58

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -72,7 +72,7 @@
72
72
 
73
73
  { //null許容型にすると値が一切読み込まれない
74
74
 
75
- //通常の非許容型にするとJSONで数値になっている部分は正常に読み込まれ,nullになっている所は0として読み込まれる
75
+ //通常のdouble型にするとJSONで数値になっている部分は正常に読み込まれ,nullになっている所は0として読み込まれる
76
76
 
77
77
  public double? x;
78
78