JSON 序列化 - 如何取消属性值的引号
JSON serialization - how to unquote a property value?
给定一个类 A ...
public class A {
public string Prop1 { get; set; }
public string Prop2 { get; set; }
}
string jsonString = JsonConvert.SerializeObject(
new A() {
Prop1 = "ABC",
Prop2 = "$.jqplot.DateAxisRenderer" }
);
jsonString 包含...'"{ "提案1":"ABC", ''"Prop2''":''"$.jqplot.日期轴渲染器''"}'";
问题:
如何取消报价 Prop2?
即我希望 jsonString 包含...'"{ "提案1":"ABC", ''"Prop2''":$.jqplot.DateAxisRenderer}'";
以便 Prop2 被评估(在客户端上(作为引用而不是字符串
如果要从 Prop2 中删除引号,可以为类型编写一个 JSON.NET JsonConverter
并将属性值输出为"raw"。
但是(这很重要(,您的输出将不再是有效的 JSON。
如果你对此混合解决方案感到满意,下面是一些示例代码(假设你已经在项目中引用了 JSON.NET(:
namespace JsonRawTest
{
public class AConverter : JsonConverter
{
public override bool CanRead { get { return false; } }
public override bool CanWrite { get { return true; } }
public override object ReadJson(JsonReader reader, Type objectType,
object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override void WriteJson(JsonWriter writer, object value,
JsonSerializer serializer)
{
A obj = value as A;
writer.WriteStartObject();
writer.WritePropertyName("Prop1");
writer.WriteValue(obj.Prop1);
writer.WritePropertyName("Prop2");
writer.WriteRawValue(obj.Prop2);
writer.WriteEndObject();
}
public override bool CanConvert(Type objectType)
{
return typeof(A).IsAssignableFrom(objectType);
}
}
public class A
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
}
class Program
{
static void Main(string[] args)
{
var a = new A
{
Prop1 = "Some first value",
Prop2 = "$.jqplot.DateAxisRenderer"
};
string json = JsonConvert.SerializeObject(a,
new JsonConverter[] { new AConverter() });
...
}
}
}
您可以将其作为字符串传递给客户端,然后使用 eval()
函数解析字符串,如下所示:
var str = "alert('hello')";
eval(str); //This will execute the alert method.
var str2 = "(function() { return true; })()";
var returned = eval(str2); //Holds value of true
相关文章:
- 取消img的css属性宽度和高度(不能使用“auto”)
- 取消 iframe 中具有 target=“_parent” 属性的链接事件
- 取消绑定angular中的scope属性
- GWT:setInnerHTML取消映射属性值
- 使用构造函数创建的数字没有其值作为属性,请取消String与构造函数的链接
- 如何将数组取消移动到对象的每个属性中
- 按钮输入上的 CSS 取消了 jQuery 中禁用的 prop 属性
- JSON 序列化 - 如何取消属性值的引号
- PHP复选框获胜't撤消禁用属性,但将取消选中
- 当getElementById返回null时,取消对属性/方法的访问
- 取消设置对象属性
- 如何在规范化/取消规范化属性名称之前获取原始属性名称
- 取消属性值的规范化-将基于骆驼的值转换为以短划线分隔的值
- 使用Breeze.js取消订阅所有属性更改事件
- Ajax Post在onclick属性中被取消
- 取消设置以相同子字符串开头的Backbone.js模型的所有属性
- 如何删除/取消设置JavaScript对象的属性
- <输入类型=“文件” /单击“取消”时>更改属性
- 取消选中使用 JavaScript 中的数据属性复选框
- AngularJS:使用timeout属性取消$http请求