对于一个项目,我用C#创建了几个结构。project本身就是一个ASP.Net MVC2项目。
截图:
struct TDummy
{
private char _value;
public TDummy(char value)
{
this._value = value; // Restrictions
}
}我之所以创建它,是因为我需要将char变量限制为特定数量的值。(我本可以创建一个Enum,但这些值也会在数据库中使用,然后我仍然需要转换它们)
现在我需要创建一个JsonResult,比如
return Json(new { Value = new TDummy('X') });但是当我这样做的时候,我得到的结果是:
{"Value":{}}我希望得到的结果是
{"Value":"X"}我尝试过几种方法,比如TypeConverter (CanConvertTo(string))、自定义类型序列化(JavaScriptSerializer.RegisterConverters()),但它们要么不起作用,要么必须返回一个“复杂”的json对象。
{"Value":{"Name":"Value"}}对此有什么想法吗?
我想将一个值类型序列化为一个值...
发布于 2011-02-24 23:30:17
如果有人感兴趣,我已经创建了一个小演示(控制台应用程序)来说明这一点:
public struct TState
{
public static TState Active = new TState('A');
public static TState Pending = new TState('P');
private char _value;
public TState(char value)
{
switch (value)
{
case 'A':
case 'P':
this._value = value; // Known values
break;
default:
this._value = 'A'; // Default value
break;
}
}
public static implicit operator TState(char value)
{
switch (value)
{
case 'A':
return TState.Active;
case 'P':
return TState.Pending;
}
throw new InvalidCastException();
}
public static implicit operator char(TState value)
{
return value._value;
}
public override string ToString()
{
return this._value.ToString();
}
}
public class Test { public TState Value { get; set; } }
class Program
{
static void Main(string[] args)
{
Test o = new Test();
o.Value = 'P'; // From Char
char c = o.Value; // To Char
Console.WriteLine(o.Value); // Writes 'P'
Console.WriteLine(c); // Writes 'P'
JavaScriptSerializer jser = new JavaScriptSerializer();
Console.WriteLine(jser.Serialize(o)); // Writes '{"Value":{}}'
Console.ReadLine();
}
}https://stackoverflow.com/questions/5092031
复制相似问题