C#中的JsonUtility.ToJson-实用程序中可能存在错误
我正在尝试使用json格式通过https发送非敏感用户数据。我正在使用JsonUtility.ToJson将C#对象转换为json。我从一个特定的C#对象开始,首先将其转换为另一个C#对象,以删除一些不需要的敏感信息。我的问题是,JsonUtility似乎没有使用铸造对象结构,而是使用原始的非铸造对象结构 如果我有如下课程: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
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以启用所需的功能。