C# 编写json重构代码

C# 编写json重构代码,c#,json,C#,Json,我将从存储过程返回的结果写入json。我这样做了,但我不确定是否有一个更简单更干净的方式比我所拥有的。另外,我如何检查它是否真的写入了json var results = mySvc.GetInfo("Environment"); StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); JsonWriter jsonWriter = new JsonTextWriter(sw); jsonW

我将从存储过程返回的结果写入json。我这样做了,但我不确定是否有一个更简单更干净的方式比我所拥有的。另外,我如何检查它是否真的写入了json

var results = mySvc.GetInfo("Environment");

StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
JsonWriter jsonWriter = new JsonTextWriter(sw);
jsonWriter.WriteStartObject();
jsonWriter.WritePropertyName("Id");
jsonWriter.WriteValue(results.Id);
jsonWriter.WritePropertyName("Head");
jsonWriter.WriteValue(results.Head);
jsonWriter.WritePropertyName("Value");
jsonWriter.WriteValue(results.Value);
jsonWriter.WritePropertyName("GuidTwo");
jsonWriter.WriteValue(results.GuidTwo);
jsonWriter.WritePropertyName("GuidOne");
jsonWriter.WriteValue(results.Guid1);
jsonWriter.WriteEndObject();
return results;
试试这个

var results = mySvc.GetInfo("Environment");
var js = new System.Web.Script.Serialization.JavaScriptSerializer();
var jsonObj = js.Serialize(results);
安装后,您只需执行以下操作:

var results = mySvc.GetInfo("Environment");
var json = JsonConvert.SerializeObject(results);
反过来说:

var results = JsonConvert.DeserializeObject<Result>(json);
var results=JsonConvert.DeserializeObject(json);
使用json序列化程序(比json.net更快)


您可以创建DataContract对象并使用JSON Serializer来扩展@janisz建议:序列化在什么名称空间下?这很好地工作了-现在如果我想用不同的方法从JSON获取信息,我如何从中提取信息?从何处来?
Result
是数据反序列化到的类。在您的情况下,它将是由
mySvc.GetInfo()
返回的任何类型,如果我想从Json中提取信息,那会是什么样子?如何使用Json?@Masriyah不使用其他类类型进行序列化,您可以使用JsonSerializer.DeserializeFromString(Json)//不是最好的解决方案,但是所有的铸造你需要做。-一定有更好的办法。。。
 Install-Package ServiceStack.Text
 using ServiceStack.Text;

 var json = results.ToJson();