首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从JSON.SerializeObject字符串属性中删除双引号

从JSON.SerializeObject字符串属性中删除双引号
EN

Stack Overflow用户
提问于 2018-10-09 07:18:30
回答 1查看 5.9K关注 0票数 1

在使用Newtonsoft的JsonConvert.SerializeObject方法序列化时,我有一个类返回一个JSON对象,类似于:

代码语言:javascript
运行
复制
{"id":8,"name":"floating-point","colour":"blue"}

在这里,属性值"blue"是一个引号字符串,因为在我的类中,colour是一个字符串。

该对象是图中的一个节点,颜色属性用于对该节点着色。我想要做的是告诉这个方法,使用这个颜色属性从Javascript函数中获取颜色,如下所示

代码语言:javascript
运行
复制
{"id":8,"name":"floating-point","colour":getColour('floating-point')}

(这确实有效)。我不需要

代码语言:javascript
运行
复制
{"id":8,"name":"floating-point","colour":"getColour('floating-point')"}

我正在使用一个第三方可视化工具来生成图形,所以我不能拦截/预处理颜色属性。

如何删除序列化时围绕颜色属性值的双引号?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-09 08:18:05

可以使用JsonConverter属性来控制值的序列化。

从技术上讲,这将不再是JSON,但听起来好像您有一个特定的用例需要这样做。

我正在使用一个第三方可视化工具来生成图形,所以我不能拦截/预处理颜色属性。

来源:https://blog.bitscry.com/2017/10/23/serializing-json-values-without-quotes/

您可以这样做JsonConverter:

代码语言:javascript
运行
复制
public class PlainJsonStringConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(string);
    }
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        return reader.Value;
    }
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        writer.WriteRawValue((string)value);
    }
}

像这样使用它:

代码语言:javascript
运行
复制
public class Config
{
    public string ID { get; set; }

    public string Name { get; set; }

    [JsonConverter(typeof(PlainJsonStringConverter))]
    public string Colour{ get; set; }
}

下面是一个显示它工作的DotNetFiddle:https://dotnetfiddle.net/dhIjvT

这是输出{"ID":"8","Name":"floating-point","Colour":getColour('floating-point')}

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52715343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档