Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#中的JsonUtility.ToJson-实用程序中可能存在错误_C#_Json_Unity3d - Fatal编程技术网

C#中的JsonUtility.ToJson-实用程序中可能存在错误

C#中的JsonUtility.ToJson-实用程序中可能存在错误,c#,json,unity3d,C#,Json,Unity3d,我正在尝试使用json格式通过https发送非敏感用户数据。我正在使用JsonUtility.ToJson将C#对象转换为json。我从一个特定的C#对象开始,首先将其转换为另一个C#对象,以删除一些不需要的敏感信息。我的问题是,JsonUtility似乎没有使用铸造对象结构,而是使用原始的非铸造对象结构 如果我有如下课程: Class A { string name; } Class B: A { string password; } 然后,我说: var myInstanceB = ne

我正在尝试使用json格式通过https发送非敏感用户数据。我正在使用JsonUtility.ToJson将C#对象转换为json。我从一个特定的C#对象开始,首先将其转换为另一个C#对象,以删除一些不需要的敏感信息。我的问题是,JsonUtility似乎没有使用铸造对象结构,而是使用原始的非铸造对象结构

如果我有如下课程:

Class A {
string name;
}

Class B: A {
string password;
}
然后,我说:

var myInstanceB = new B();
myInstanceB.name = "Fred";
myInstanceB.password = "1234";
那么

A myInstanceA = (A)myInstanceB;
如果我转换为json:

string httpBody = JsonUtility.ToJson(myInstanceA);
不幸的是,我发现httpBody包含:

{"name":"Fred", "password":"1234"}
而不是:

{"name":"Fred"}
通过强制转换为A,我希望密码消失

显然,我可以创建一个类a的新对象,并从B中单独分配所需的字段,但这似乎是不必要的


想法?

字符串ToJson(objectobj)
接受一个
对象,并且不是泛型的,因此它使用对象的运行时类型。强制转换不会更改运行时类型。谢谢。我不明白为什么实用程序不能使用输入类型。因为输入类型是
对象
,而运行时类型是
B
。练习:制作一个方法,该方法接受类型为
object
的参数,并在该方法中编写一些代码以获得对象的实际类型。即使在传入对象之前将该对象强制转换为
A
,也可以使用
obj.GetType()
获得
B
。您不能通过强制转换使用
A
的输入类型,因为该方法不是泛型的;这些信息不会被保留,好的。我只是认为可以通过某种方式修改JSONUtility以启用所需的功能。