我有一个 MVC 应用程序,它将我的模型序列化为 json 模式(使用 Newtonsoft json.net 模式)。问题是我的数组中的项目有 type ["string", "null"],但我需要的只是"string". 这是我班级的代码:
public class Form
{
[Required()]
public string[] someStrings { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是由 Json.net 架构制作的架构:
"someStrings": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
}
}
Run Code Online (Sandbox Code Playgroud)
虽然我期待这个:
"someStrings": {
"type": "array",
"items": {
"type": "string"
}
}
Run Code Online (Sandbox Code Playgroud)
请帮我摆脱那个“空”。
有没有一种方法可以将Json.Net配置为自动编码所有字符串,例如HtmlEncode(myString)在对模型进行序列化时?
我正在 .Net 中为 Cosmos DB 创建一个存储库,为了保持 DRY 并避免用 装饰每个类属性[JsonProperty(PropertyName = "thePropertyName")],我用 .Net 装饰了我的类 [JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]。
CreateDocumentAsync(例如)使用属性的驼峰式大小写名称正确序列化 JSON 格式的 Cosmos DB 文档。到目前为止,一切都很好。
然而,我的问题是,当我通过 LINQ 查询 Cosmos DB 时,它生成的用于查询 COSMOS DB 的 SQL 不尊重[JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]装饰类的属性,因此不会返回任何文档。这是因为 Cosmos DB 查询对于字段/属性名称区分大小写。例如,以下命令会产生不同的结果(请注意名称的大小写差异):
SELECT * FROM c WHERE c.name = "Health"
Run Code Online (Sandbox Code Playgroud)
与
SELECT * FROM c WHERE c.Name = "Health"
Run Code Online (Sandbox Code Playgroud)
我通过检查 生成的查询 SQL 确认了这一点CreateDocumentQuery,并寻找了可以允许我指示属性名称大小写的选项,但SqlQuerySpec没有成功。
所以,我的问题是:有谁知道如何在 Cosmos Db 中使用类定义的驼峰式大小写策略进行 LINQ 查询,而不必通过[JsonProperty(PropertyName = "thePropertyName")].
预先感谢大家的帮助。
我有一个类,FooCollection比方说,它实现了IEnumerable<Foo>,并且还提供了一个索引器,通过它可以Foo按名称查找a .在功能上它只是字典的只读.但它并不是真正的字典,因为用户无法决定密钥.
无论如何,我希望JSON.NET将此对象序列化为JSON字典,而不是现在正在执行的数组.坚持JsonDictionaryAttribute它不起作用:然后它什么都不做.
线索?
我需要为我使用Json.Net序列化的每个对象添加一个'type'属性.我知道Json.Net已经支持这个开箱即用,但在我的情况下,类型名称需要排除程序集,并且属性的名称必须是可配置的(两者都不受支持).
我目前有这个:
public class TypeConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serialiser)
{
JObject jObject = JObject.FromObject(value, serializer);
jObject.AddFirst(new JProperty("myCustomTypePropertyName"), value.GetType().Name);
jObject.WriteTo(writer);
}
public override void ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serialiser)
{
throw new NotImplementedException();
}
public override bool CanConvert(Type objectType)
{
return objectType.IsClass;
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于正在序列化的外部类型,但遗憾的是没有为嵌套对象调用转换器.如果我将序列化器添加到JObject.FromObject调用中,那么我会尝试重新进入外部类型的转换器时出现自引用循环异常.
我可以解决这个问题的唯一方法是手动反映和迭代每个级别的属性,并使用serializer参数对它们进行序列化,但即使在考虑性能之前,它也非常难看.
我很感激对此的一些帮助; 我希望我遗漏了一些明显的东西.
(注意:我正在运行.NET 3.5,因此SerializationBinder是不可能的.)
大家好我的json serealization问题.我在Unity下使用Json.NET包:我正在搜索一个数据库,可以在我的应用程序上编辑,并通过wwwForm和一个php文件存储在我的服务器上.我没有问题来创建它并将其推到网上.问题是,当我加载它时,数据库最后有一个新条目.数据库类是这样的:
public class Database {
public List<Army> armies { get; set;}
public Database() {
armies = new List<Army>();
armies.Add (new Army());
}
}
public class Army
{
public string faction { get; set;}
public List<Unit> army { get; set;}
public Army()
{
faction = "RED";
army = new List<Unit>();
army.Add (new Unit());
}
}
public class Unit
{
public string name { get; set;}
public float fissionTimer { get; set;}
public float HP { get; set;}
public int shield …Run Code Online (Sandbox Code Playgroud) 我一直在尝试从admob实施原生广告.
我从Github那里得到了一些示例代码.我试图实现这个代码,演示代码工作正常.原生广告正确显示.
然后我创建了自己的Admob帐户并获得了一个Ad Unit ID.以前的原生广告演示代码无法使用此ID,但我收到了错误代码错误,0尽管我创建Ad Unit ID的横幅广告效果很好.
有人可以帮我吗?
我使用Json.Net填充类,如下所示:
var account = JsonConvert.DeserializeObject<Account>(result.ToString());
Run Code Online (Sandbox Code Playgroud)
上面的结果JSON字符串填充了我的Account类中的几个属性.我后来有一个新的JSON字符串,并希望Account用剩余的属性填充相同的类.这可能使用JSON.NET或JsonConvert方法吗?我基本上想要添加/添加到我在上面的代码行中填充的帐户对象.
我的课:
public class Account
{
public string CID { get; set; }
public string jsonrpc { get; set; }
public string id { get; set; }
public List<string> mail { get; set; }
public List<string> uid { get; set; }
public List<string> userPassword { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 我有一个基于从第三方 API 获取的非常复杂的 JSON 定义的 C# 对象。这是其中的一部分:
{"alarmSummary":"NONE"}
Run Code Online (Sandbox Code Playgroud)
C# 中对应的属性是:
public string alarmSummary {get; set;}
Run Code Online (Sandbox Code Playgroud)
我将使用 JSON.NET 中的典型 JSONConvert 进行转换:
var alarms = JSONConvert.DeserializeObject<MyClass>(jsonString);
Run Code Online (Sandbox Code Playgroud)
但是,API 将以这种格式将警报作为数组放置,如果没有任何警报作为字符串,则将其放置为“NONE”:
{"alarmSummary" : ["AHHH Something went wrong!!", "I'm on fire!!"]}
Run Code Online (Sandbox Code Playgroud)
这意味着在 C# 中它需要是:
public string[] alarmSummary {get; set;}
Run Code Online (Sandbox Code Playgroud)
如果可以的话,我会让 JSONConvert 将“NONE”字符串反序列化为只有一个条目的数组。有没有办法为此属性设置条件,或者我必须获取整个复杂的 JSON 字符串并手动转换它?
这是我的第一篇文章,我尝试寻找解决方案,但无济于事。
我试图通过按下选项卡按钮来移动鼠标指针。IE。tab 选择下一个可选字段,我希望我的鼠标位于该可选字段上,以便鼠标通过点击 tab 在页面上移动。
否则,一种获取所选项目坐标并将其分配给鼠标的方法。
-更新信息被遗漏-
我的程序打开了另一个程序,我不确定如何引用该程序中出现问题的所选项目。
谢谢。
c# ×9
json.net ×8
json ×5
.net ×3
admob ×1
android ×1
html-encode ×1
jsonschema ×1
linq ×1
winforms ×1