- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个类似这样的类库项目....
[DataContract]
public class DomainVerify
{
[DataMember]
internal string key { get; set; }
public string domain { get; set; }
public string mailbox { get; set; }
}
我将 key 设置为 Internal,因此我的其他项目看不到此属性。现在的问题是,在我有“DomainVerify”类的同一个项目中,我正在使用 JavaScriptSerialize 将我的类序列化为 JSON 字符串,而且似乎我无法序列化“key”属性,因为它是“内部的”。
var json = new JavaScriptSerializer().Serialize(DomainVerify); // Skips Key property
有没有这样我可以将这个属性隐藏到其他项目,但可以在同一个项目中序列化这个属性?
最佳答案
我认为您必须使用 DataContractJsonSerializer。
以下是 MSDN 上提供的示例。此示例具有内部属性。
http://msdn.microsoft.com/en-us/library/bb412179(v=vs.110).aspx .
我没有尝试使用 JavaScriptSerializer,但如果有一些允许的设置,那么只有内部序列化是可能的,所以我建议尝试使用 DataContractJsonSerialier。
如果这不能解决您的问题,请寻找 Newton.Json。 http://www.tecsupra.com/serializing-only-some-properties-of-an-object-to-json-using-newtonsoft-json-net/
最后但同样重要的是确保您的内部属性具有一定的值(value)。
DataContractJsonSerializer
class Program
{
static void Main(string[] args)
{
DomainVerify verify = new DomainVerify() { domain = "test", key = "myKey", mailbox = "Newkey" };
Console.WriteLine(GetJsonString(verify));
Console.ReadLine();
}
public static string GetJsonString(object o)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(o.GetType());
using (MemoryStream ms = new MemoryStream())
{
ser.WriteObject(ms, o);
string jsonData = Encoding.Default.GetString(ms.ToArray());
return jsonData;
}
}
}
[DataContract]
public class DomainVerify
{
[DataMember]
internal string key { get; set; }
[DataMember]
public string domain { get; set; }
[DataMember]
public string mailbox { get; set; }
}
在 WCF 的情况下,您必须使用 datacontract 标记要参与序列化的每个属性。
您必须添加 System.ServiceModel 和 System.Runtime.Serialization 程序集。
如果是 Json.net(你必须添加包)
public class DomainVerify
{
[Newtonsoft.Json.JsonProperty] // if you don't mark this attribute then as this is internal property it will not serilize.
internal string key { get; set; }
[Newtonsoft.Json.JsonProperty] // as this is public property it always include in serilization unless you mark it with JsonIgnore.
public string domain { get; set; }
[Newtonsoft.Json.JsonProperty]
public string mailbox { get; set; }
}
class Program
{
static void Main(string[] args)
{
DomainVerify verify = new DomainVerify() { domain = "test", key = "myKey", mailbox = "Newkey" };
Console.WriteLine(GetJsonString(verify));
Console.ReadLine();
}
public static string GetJsonString(object o)
{
return JsonConvert.SerializeObject(o);
}
}
希望以上内容对您有所帮助。
注意:我仍然有一些疑问,如果您从其他项目传递这个对象,那么这个字段可能不包含正确的值或为空,因为它是内部的。
关于c# - JavaScriptSerializer 序列化内部属性成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27139602/
我怎样才能找到这个问题的根源,其中一个日期值由JavaScriptSerializer 不能被 JavaScriptSerializer 反序列化? 在调用应用程序中: var serializer
我有一个包含三个参数的对象(称为表达式): term1 操作 term2 其中 term1 和 term2 是对象,操作是字符串。处理对象的逻辑可以处理 term1 或 term2 作为字符串或包含嵌
我遇到的问题与此处描述的完全相同 https://stackoverflow.com/questions/12565464/javascriptserializer-deserialize-an-id
我在使用 JavaScriptSerializer 序列化时遇到问题。比如我有一个基类 public class MyBaseClass{ public int Id { get; set;
MSDN documentation JavaScriptSerializer 类的状态: Json.NET should be used serialization and deserializat
我有一个图形对象,我需要对其进行序列化。无论我实现哪些成员,该方法都会返回 {} string json = new JavascriptSerializer().Serialize(routeGra
我有一个继承自 A 类的 B 类。 Class B:A { public string Prop1{get;set} public string Prop2{get;set} pub
我将 JavascriptSerializer 与自定义 JavascriptConverter 一起使用,如下所示: public override IDictionary Serialize(ob
我有一个类似这样的类库项目.... [DataContract] public class DomainVerify { [DataMember] internal string ke
我在尝试实现 JavaScriptSerializer 来解析从服务器接收的 JSON 字符串时遇到问题。 我实现了以下代码: responseFromServer = readStream.Read
我有以下数据: {"data":{"id":"7IaWnXo","title":null,"description":null,"datetime":1397926970,"type":"image/
我正在使用 JavaScriptSerializer 反序列化 json 数据。一切正常,但我的问题是,json 数据中的一个属性名为“base”,因此我无法在我的 C# 代码中创建这样的属性。我发现
我在反序列化 .NET MVC3 中的数组时遇到问题,我们将不胜感激。 这是代码片段: using (HttpWebResponse response = request.GetResponse()
我正在尝试在 Net 3.5 中使用 JavaScriptSerializer 生成以下 JSON 结构: { "chart": "pie", "series": [
我正在阅读 this book但是我使用 System.Web.Script.Serialization 命名空间中的 JavaScriptSerializer,因为它似乎不可用? 最佳答案 我知道这
我知道ScriptIgnoreAttribute。 但是,如果我想忽略基于条件的属性该怎么办。 例如,如何仅在序列化为null且不包含任何值时才忽略序列化的可空属性? 最佳答案 我最好的答案是制作自己
我在 Windows Azure 上有一个基于预测的应用程序 ( http://ipredikt.com )。据我所知,Azure 的时钟与 GMT 时区同步。这是我遇到的一个问题: 假设我有一个名为
我使用以下代码将 JSON 字符串反序列化为使用 Person 对象: JavaScriptSerializer serializer = new JavaScriptSerializer(); Pe
我正在 visual studio 2013 中用 c# 创建一个网络服务。我已连接到数据库并使用以下代码返回 json。 [WebMethod] [ScriptMethod(ResponseForm
我返回了一个 Json(myObj) 操作结果。 myObj 是 Badge 类型 Badge 仅有的两个可能导致序列化程序循环的对象是: public class Badge { publi
我是一名优秀的程序员,十分优秀!