如何在没有引号和数据集名称的情况下将我的数据集转换为Json?

时间:2017-03-01 07:47:06

标签: c# .net json asp.net-mvc-4 asp.net-web-api

我正在使用此代码将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("","")或索引方法来实现我的结果。

1 个答案:

答案 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,则不再引用对象名称。