実現したいこと
Json文字列にシリアライズした文字列をデシリアライズした際にBool型の値がおかしくなります。
具体的には、"value"を「False」で設定しておりますが、デシリアライズした際に「true」になってしまいます。
発生している問題・分からないこと
JsonObjectを正しくBool型に変更する方法が知りたいです。
該当のソースコード
Json文字列
1{"scope":0,"key":"Var1","typeName":"System.Boolean","value":false}
C#
1string jsonstr = "{\"cope\":\"0\",\"key\":\"Var1\",\"typeName\":\"System.Boolean\",\"value\":\"false\"}";2JSONObject json = new JSONObject(jsonstr);3var scope = json.GetField("scope") as object;4string key = json.GetField("key").str;5string typeName = json.GetField("typeName").str;6 if (typeName.Equals("System.Boolean"))7{8 bool value = (bool)json.GetField("value");9 Debug.Log(value); //出力結果「True」。10 if(value == false) SetBooleanVariable(key, false);11 if (value == true) SetBooleanVariable(key, true);12}
試したこと・調べたこと
上記の詳細・結果
"value"をBool型ではなくstring型として判定しようと試みましたが、nullが格納されてしまいました。。
C#
1 if (typeName.Equals("System.Boolean"))2 {3 string value = json.GetField("value").str;4 5 Debug.Log(value); //「Null」で出力される。6 if(value.Equals("false")) SetBooleanVariable(key, false);7 if (value.Equals("true")) SetBooleanVariable(key, true);8 9 }
補足
特になし
0 コメント