如何将我的数据集转换为没有引号和数据集名称的 Json?
Posted
技术标签:
【中文标题】如何将我的数据集转换为没有引号和数据集名称的 Json?【英文标题】:How can I convert my Dataset to Json without Quotes and Dataset name? 【发布时间】:2017-07-20 10:34:10 【问题描述】:我正在使用此代码将 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("","")
或索引方法来实现我的结果。
【问题讨论】:
为什么要用序列化到json字符串后面写不想用。 实际上,我不想序列化它,但是,我在引号和数据集名称@Breakermind 中有这个 ***.com/questions/949449/… 尝试从变量创建字符串不要使用 json 序列化字符串 s = " \"Name\" : 123 "+variable+""; @WimOmbelets ...感谢您提醒欧比旺的报价,但是,您知道 可能是对的 。与我们打交道的人在技术上是非技术的 【参考方案1】:您应该避免使用它,因为它不符合 JSON 标准。
也就是说,如果您需要继续使用它,Christophe Geers 提供了一个很好的解决方案:https://***.com/a/7555096/4636912
使用 Json.NET 库,您可以按如下方式实现:
[JsonObject(MemberSerialization.OptIn)] public class ModalOptions [JsonProperty] public object href get; set; [JsonProperty] public object type get; set;
当序列化对象时,使用 JsonSerializer 类型而不是静态 JsonConvert 类型。
例如:
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();
这将产生:
href:"file.html",type:"full"
如果您将 JsonTextWriter 实例的 QuoteName 属性设置为 false,则将不再引用对象名称。
【讨论】:
还有,如何不附加数据集名称?以上是关于如何将我的数据集转换为没有引号和数据集名称的 Json?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Scala 中将数据帧转换为 Apache Spark 中的数据集?