我正在使用此代码将DataSet转换为JSon。
JObject jsonObject = new JObject();
string jsonString = string.Empty;
JsonSerializerSettings jsonSettings = new JsonSerializerSettings();
jsonSettings.StringEscapeHandling = StringEscapeHandling.EscapeHtml;
jsonString = JsonConvert.SerializeObject(dsResults, jsonSettings);
jsonObject = JObject.Parse(jsonString);
if (!string.IsNullOrEmpty(identifier))
jsonObject.AddFirst(new JProperty("identifier", identifier));
if (!string.IsNullOrEmpty(resourceType))
jsonObject.AddFirst(new JProperty("resourceType", resourceType));
if (!string.IsNullOrEmpty(patientId))
{
jsonObject.AddFirst(new JProperty("patientId", patientId));
jsonObject.AddFirst(new JProperty("status", "'{success: true}'"));
}
jsonString = jsonObject.ToString();
并且,它给我输出(将数据集名称和引号内的所有内容附加)为;
{
"TableName": [
{
"status": "{success: true}",
"softwareName": "MY Software",
"softwareVersion": "0.4.5.9",
"TimeZone": "(UTC+12:00) City, Country"
}
]
}
但是,我想要这样的输出
{
status: {success: true},
softwareName: "My Software ",
softwareVersion: "0.4.5.9",
TimeZone: (UTC+12:00) City, Country
}
上述代码有什么问题或我可以做哪些修改?我不想用jsonString.Replace("","")
或索引方法来实现我的结果。
答案 0 :(得分:0)
您应该避免使用它,因为它不符合JSON标准。
那就是说,如果你需要继续这样做,Christophe Geers就是一个很好的解决方案:https://stackoverflow.com/a/7555096/4636912
使用Json.NET库,您可以按如下方式实现:
Zip("./", "dllfiles.zip", "./*.dll");
序列化对象时,请使用JsonSerializer类型而不是静态JsonConvert类型。
例如:
[JsonObject(MemberSerialization.OptIn)] public class ModalOptions { [JsonProperty] public object href { get; set; } [JsonProperty] public object type { get; set; } }
这将产生:
var options = new ModalOptions { href = "file.html", type = "full" }; var serializer = new JsonSerializer(); var stringWriter = new StringWriter(); using (var writer = new JsonTextWriter(stringWriter)) { writer.QuoteName = false; serializer.Serialize(writer, options); } var json = stringWriter.ToString();
如果将JsonTextWriter实例的QuoteName属性设置为false,则不再引用对象名称。