Newtonsoft.Json.JsonSerializationException(从“System.Data.SqlTypes.SqlDouble”上的“Value”获取值时出错)序列化 SqlGeography

2024-01-08

我尝试序列化一个DataTable在数据库 SQL Server 2012 中使用 Newtonsoft.Json 版本“Newtonsoft.Json.10.0.3”将对象转换为 Json。

该表有一列类型为“geography”,其中包含类型的实例SqlGeography https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.types.sqlgeography.aspx.

用于生成json的代码:

    public string SerializeToJson()
    {

     var connstring1 ="Data Source=server1;Initial Catalog=database1;user=xxx;password=yyy";
        var sql = "SELECT  * FROM table_1 "; //table_1 has a column of type geography
        using (var c1 = new SqlConnection(connstring1))
        {
            c1.Open();
            var da = new SqlDataAdapter()
            {
                SelectCommand = new SqlCommand(sql, c1)
            };

            DataSet ds1 = new DataSet("table");
            da.Fill(ds1, "table");
            var dt = ds1.Tables[0];

            //serialize to Json

            try
            {
                var options = new JsonSerializerSettings
                {
                    Formatting = Formatting.None
                };
                //this line fire exception for geography type
                var json = JsonConvert.SerializeObject(dt, options);
                return json;
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex);
            }                
        }
    }

我已经安装了 sql 2012 功能包中的程序集“Microsoft.SqlServer.Types”

我使用带有 SqlGeography 列的数据表创建了一个完整的 C# 程序(独立于 sql server 安装)来显示问题Try it https://dotnetfiddle.net/8MMQOW

我收到错误:

Newtonsoft.Json.JsonSerializationException:从“System.Data.SqlTypes.SqlDouble”上的“Value”获取值时出错。 --->

System.Data.SqlTypes.SqlNullValueException:数据为空。 不能对 Null 值调用此方法或属性。 在 System.Data.SqlTypes.SqlDouble.get_Value() 在获取值(对象) 在 Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(对象目标)

我到了https://github.com/JamesNK/Newtonsoft.Json/issues/993 https://github.com/JamesNK/Newtonsoft.Json/issues/993,但这无济于事。

任何帮助解决问题。

Edit:

根据@dbc评论,我提供了用于生成json的完整源代码。

完整的错误信息是:

Newtonsoft.Json.JsonSerializationException:从“System.Data.SqlTypes.SqlDouble”上的“Value”获取值时出错。 ---> >System.Data.SqlTypes.SqlNullValueException:数据为空。不能对 Null 值调用此方法或属性。 在 System.Data.SqlTypes.SqlDouble.get_Value() 在获取值(对象) 在 Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(对象目标)

--- 内部异常堆栈跟踪结束 --- 在 Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(对象目标)

在Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter writer,对象值,JsonContainerContract合同,JsonProperty成员,JsonProperty属性,JsonContract&memberContract,Object&memberValue) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter writer、对象值、JsonObjectContract 合约、JsonProperty 成员、JsonContainerContract 集合合约、JsonProperty containerProperty) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue( JsonWriter writer、对象值、JsonContract valueContract、JsonProperty 成员 、JsonContainerContract 容器合约、JsonProperty 容器属性) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter writer、对象值、JsonObjectContract 合约、JsonProperty 成员、JsonContainerContract 集合合约、JsonProperty containerProperty) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue( JsonWriter writer、对象值、JsonContract valueContract、JsonProperty 成员 、JsonContainerContract 容器合约、JsonProperty 容器属性) 在Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter,对象值,类型objectType) 在Newtonsoft.Json.Serialization.JsonSerializerProxy.SerializeInternal(JsonWriter jsonWriter,对象值,类型rootType) 在Newtonsoft.Json.Converters.DataTableConverter.WriteJson(JsonWriter作家, 对象值、JsonSerializer序列化器) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeConver 表(JsonWriter编写器、JsonConverter转换器、对象值、JsonContract合约、JsonContainerContract集合合约、JsonProperty containerProperty)

在 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue( JsonWriter writer、对象值、JsonContract valueContract、JsonProperty 成员 、JsonContainerContract 容器合约、JsonProperty 容器属性) 在Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter,对象值,类型objectType) 在Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter,对象值,类型objectType) 在Newtonsoft.Json.JsonConvert.SerializeObjectInternal(对象值,类型类型,JsonSerializer jsonSerializer) 在 Newtonsoft.Json.JsonConvert.SerializeObject(对象值,JsonSerializerSettings 设置) 在 F:\JsonTester.cs 中的 JsonTester.SerializeToJson() 处:第 104 行

Edit2:

我按照 @dbc 的描述启用跟踪,并获取以下日志:

2017-08-24T19:45:31.941 Info 开始使用转换器 Newtonsoft.Json.Converters.DataTableConverter 序列化 System.Data.DataTable。小路 ''。

2017-08-24T19:45:31.972 信息开始序列化 Microsoft.SqlServer.Types.SqlGeography。路径“[0].f1”。

2017-08-24T19:45:32.003 信息开始序列化 System.Data.SqlTypes.SqlInt32.Path '[0].f1.STSrid'。

2017-08-24T19:45:32.003 Info 已完成序列化 System.Data.SqlTypes.SqlInt32。路径“[0].f1.STSrid”。

2017-08-24T19:45:32.003 Info 开始序列化 System.Data.SqlTypes.SqlDouble。路径“[0].f1.Lat”。

2017-08-24T19:45:32.003 信息已完成序列化 System.Data.SqlTypes.SqlDouble。路径“[0].f1.Lat”。

2017-08-24T19:45:32.003 Info 开始序列化 System.Data.SqlTypes.SqlDouble。路径“[0].f1.Long”。

2017-08-24T19:45:32.003 信息已完成序列化 System.Data.SqlTypes.SqlDouble。路径“[0].f1.Long”。

2017-08-24T19:45:32.003 Info 开始序列化 System.Data.SqlTypes.SqlDouble。路径“[0].f1.Z”。

2017-08-24T19:45:32.003错误序列化System.Data.SqlTypes.SqlDouble.Error从“System.Data.SqlTypes.SqlDouble”上的“Value”获取值时出错。

2017-08-24T19:45:32.003 错误 序列化 System.Data.DataTable 时出错。从“System.Data.SqlTypes.SqlDouble”上的“Value”获取值时出错。


看起来好像原始类型如SqlDouble from System.Data.SqlTypes无法通过 Json.NET 进行开箱即用的序列化,因为它们没有实现自己的TypeConverter。来自docs https://www.newtonsoft.com/json/help/html/SerializationGuide.htm:

原始类型

.Net: TypeConverter(可转换为字符串)
JSON:字符串

这将有必要实施一个custom JsonConverter https://www.newtonsoft.com/json/help/html/CustomJsonConverter.htm序列化这些类型。 Json.NET 有几个内置的转换器 https://www.newtonsoft.com/json/help/html/N_Newtonsoft_Json_Converters.htm例如KeyValuePairConverter https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_Converters_KeyValuePairConverter.htm对于内置 .Net 类型,因此这并不罕见。

事实是SqlBoolean, SqlBinary, SqlDouble等等不共享公共基类或接口,除了INullable https://msdn.microsoft.com/en-us/library/system.data.sqltypes.inullable(v=vs.110).aspx需要一些看起来重复的代码:

public static class SqlPrimitiveConverters
{
    public static JsonSerializerSettings AddSqlConverters(this JsonSerializerSettings settings)
    {
        foreach (var converter in converters)
            settings.Converters.Add(converter);
        return settings;
    }

    static readonly JsonConverter[] converters = new JsonConverter[]
    {
        new SqlBinaryConverter(),
        new SqlBooleanConverter(),
        new SqlByteConverter(),
        new SqlDateTimeConverter(),
        new SqlDecimalConverter(),
        new SqlDoubleConverter(),
        new SqlGuidConverter(),
        new SqlInt16Converter(),
        new SqlInt32Converter(),
        new SqlInt64Converter(),
        new SqlMoneyConverter(),
        new SqlSingleConverter(),
        new SqlStringConverter(),
        // TODO: converters for primitives from System.Data.SqlTypes that are classes not structs:
        // SqlBytes, SqlChars, SqlXml
        // Maybe SqlFileStream
    };
}

abstract class SqlPrimitiveConverterBase<T> : JsonConverter where T : struct, INullable, IComparable
{
    protected abstract object GetValue(T sqlValue);

    public override bool CanConvert(Type objectType)
    {
        return typeof(T) == objectType;
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        T sqlValue = (T)value;
        if (sqlValue.IsNull)
            writer.WriteNull();
        else
        {
            serializer.Serialize(writer, GetValue(sqlValue));
        }
    }
}

class SqlBinaryConverter : SqlPrimitiveConverterBase<SqlBinary>
{
    protected override object GetValue(SqlBinary sqlValue) { return sqlValue.Value; }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.Null)
            return SqlBinary.Null;
        return (SqlBinary)serializer.Deserialize<byte[]>(reader);
    }
}

class SqlBooleanConverter : SqlPrimitiveConverterBase<SqlBoolean>
{
    protected override object GetValue(SqlBoolean sqlValue) { return sqlValue.Value; }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.Null)
            return SqlBoolean.Null;
        return (SqlBoolean)serializer.Deserialize<bool>(reader);
    }
}

class SqlByteConverter : SqlPrimitiveConverterBase<SqlByte>
{
    protected override object GetValue(SqlByte sqlValue) { return sqlValue.Value; }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.Null)
            return SqlByte.Null;
        return (SqlByte)serializer.Deserialize<byte>(reader);
    }
}

class SqlDateTimeConverter : SqlPrimitiveConverterBase<SqlDateTime>
{
    protected override object GetValue(SqlDateTime sqlValue) { return sqlValue.Value; }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.Null)
            return SqlDateTime.Null;
        return (SqlDateTime)serializer.Deserialize<DateTime>(reader);
    }
}

class SqlDecimalConverter : SqlPrimitiveConverterBase<SqlDecimal>
{
    protected override object GetValue(SqlDecimal sqlValue) { return sqlValue.Value; }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.Null)
            return SqlDecimal.Null;
        return (SqlDecimal)serializer.Deserialize<decimal>(reader);
    }
}

class SqlDoubleConverter : SqlPrimitiveConverterBase<SqlDouble>
{
    protected override object GetValue(SqlDouble sqlValue) { return sqlValue.Value; }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.Null)
            return SqlDouble.Null;
        return (SqlDouble)serializer.Deserialize<double>(reader);
    }
}

class SqlGuidConverter : SqlPrimitiveConverterBase<SqlGuid>
{
    protected override object GetValue(SqlGuid sqlValue) { return sqlValue.Value; }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.Null)
            return SqlGuid.Null;
        return (SqlGuid)serializer.Deserialize<Guid>(reader);
    }
}

class SqlInt16Converter : SqlPrimitiveConverterBase<SqlInt16>
{
    protected override object GetValue(SqlInt16 sqlValue) { return sqlValue.Value; }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.Null)
            return SqlInt16.Null;
        return (SqlInt16)serializer.Deserialize<short>(reader);
    }
}

class SqlInt32Converter : SqlPrimitiveConverterBase<SqlInt32>
{
    protected override object GetValue(SqlInt32 sqlValue) { return sqlValue.Value; }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.Null)
            return SqlInt32.Null;
        return (SqlInt32)serializer.Deserialize<int>(reader);
    }
}

class SqlInt64Converter : SqlPrimitiveConverterBase<SqlInt64>
{
    protected override object GetValue(SqlInt64 sqlValue) { return sqlValue.Value; }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.Null)
            return SqlInt64.Null;
        return (SqlInt64)serializer.Deserialize<long>(reader);
    }
}

class SqlMoneyConverter : SqlPrimitiveConverterBase<SqlMoney>
{
    protected override object GetValue(SqlMoney sqlValue) { return sqlValue.Value; }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.Null)
            return SqlMoney.Null;
        return (SqlMoney)serializer.Deserialize<decimal>(reader);
    }
}

class SqlSingleConverter : SqlPrimitiveConverterBase<SqlSingle>
{
    protected override object GetValue(SqlSingle sqlValue) { return sqlValue.Value; }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.Null)
            return SqlSingle.Null;
        return (SqlSingle)serializer.Deserialize<float>(reader);
    }
}

class SqlStringConverter : SqlPrimitiveConverterBase<SqlString>
{
    protected override object GetValue(SqlString sqlValue) { return sqlValue.Value; }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.Null)
            return SqlString.Null;
        return (SqlString)serializer.Deserialize<string>(reader);
    }
}

Working .Net小提琴 https://dotnetfiddle.net/Qm5PgQ从你的分叉own https://dotnetfiddle.net/8MMQOW.

如果您需要反序列化由此创建的 JSON,则会遇到两个额外的问题。首先,一些属性SqlGeography https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.types.sqlgeography.aspx例如Lat https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.types.sqlgeography.lat.aspx and Long https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.types.sqlgeography.long.aspx是仅获取的。您将需要创建一个自定义JsonConverter完全反序列化此类型。

其次,Json.NET 不具备将行值的复杂对象的 JSON 反序列化为非类型化的能力DataTable。因此,如果您需要反序列化包含复杂对象的 JSON(例如序列化的SqlGeography),您有以下选择:

  1. 创建并反序列化为类型化DataTable.

  2. Use DataTableConverter直接填充预先存在的DataTable具有预先分配的列,如图所示here https://stackoverflow.com/a/41753376/3744182.

  3. 反序列化为列表DTOs https://en.wikipedia.org/wiki/Data_transfer_object例如以下内容:

    public class TableRowDTO
    {
        [JsonConverter(typeof(SqlGeographyConverter))]
        public SqlGeography f1 { get; set; }
        public int id { get; set; }
    }
    

    Where SqlGeographyConverter根据需要,是一个自定义JsonConverter for SqlGeography.

    然后执行以下操作:

    var settings = new JsonSerializerSettings().AddSqlConverters();
    var list = JsonConvert.DeserializeObject<List<TableRowDTO>>(jsonString, settings);
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Newtonsoft.Json.JsonSerializationException(从“System.Data.SqlTypes.SqlDouble”上的“Value”获取值时出错)序列化 SqlGeography 的相关文章

  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 将多行合并为一行并根据行数附加列

    我正在尝试将同一个表的多行合并为一个 我有一个像这样的示例表 Col1 Col2 Col3 Col4 Col5 Col6 1 BH1 CB 12 CC CC Conveyor Mal 1 BH1 CB 104 ZC ZC Full Emp
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 是否可以从图像中获取图像 GPS 位置坐标?

    我正在构建一个 Flutter 应用程序 用户可以在其中发布照片及其位置 用户可以从相机或图库中获取图片 如果用户从相机拍照 我可以使用设备的 GPS 位置来设置图片的位置 我正在尝试根据图片的元数据获取图片的 GSP 位置 但是 我还没有
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • 案例陈述以确定我是否应该结合

    我目前想做某种条件联合 给出以下示例 SELECT age name FROM users UNION SELECT 25 AS age Betty AS name 假设我只想在 用户 计数 gt 2 时合并第二个语句 否则不合并两者 总之
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 从一个sql服务器选择到另一个sql服务器?

    我想将一台服务器 Data Old S1 中的一个表 T1 在 DB1 中 中的数据选择到另一台服务器 Data Latest S2 中的另一个表 T2 在 DB2 中 中的数据 我怎样才能做到这一点 请注意服务器的命名方式 查询也应该考虑
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反

随机推荐

  • 如何取消或处置 WebBrowser 元素的当前导航

    我正在开发一个 C NET Framework 4 0 应用程序 它按顺序访问一些页面 有时我必须移至下一页而不等待上一页完成工作 如何取消之前的导航过程WebBrowser元素 WebBrowser元素使用 Internet Explor
  • 模拟器设备框架未显示

    我第一次在 MacBook 上安装 Android Studio 我按如下方式安装了第一个模拟器 但是当我打开设备时 我看不到设备框架 我需要做什么才能看到设备周围的框架 我使用的是 M2 MacBook 创建模拟器 没有设备框架的模拟器
  • 初始化使指针来自整数而不进行强制转换 - C

    很抱歉 如果这篇文章显得无知 但我对 C 还很陌生 所以我对它没有很好的理解 现在我正在尝试找出指针 我编写了这段代码来测试是否可以更改更改函数中 b 的值 并通过传入指针将其带回主函数 不返回 但是 我收到一条错误消息 Initializ
  • Docker 挂载发生在入口点执行之前或之后

    我正在构建一个 Docker 映像来运行基于 Spring Boot 的应用程序 我希望用户能够通过将包含 application properties 的文件夹安装到容器中来提供运行时属性文件 这是我的 Dockerfile FROM j
  • Mysql:重复键更新所有值?

    有没有简单的方法可以更新重复键后的所有值 例如 INSERT INTO published books SELECT FROM books WHERE book id book id ON DUPLICATE KEY UPDATE ever
  • 从超类访问 __DATA__

    我有一个名为 Response 的超类 package Response use strict use warnings use HTML Template sub response my class request return requ
  • 并行运行测试会导致 java 堆内存不足。

    并行运行测试会导致 java 堆内存不足 但是当我不并行运行它们时 不存在内存问题 这是错误 java lang OutOfMemoryError Java 堆空间 在 java util Arrays copyOf Arrays java
  • 使用 NGINX 添加 AWS 公共证书

    我正在使用 EC2 并使用 NGINX 由 PuTTY 提供 我选择了AWS 公共证书因此我明白要使用HTTPS我也需要配置 NGINX 我找到了一些关于它的教程 但是他们到处都添加了ssl certificate and ssl cert
  • 如何在 UICollectionViewController 中提供 GetSizeForItem 实现?

    UICollectionViewDelegateFlowLayout http developer apple com library ios documentation UIKit Reference UICollectionViewDe
  • 如何在渲染方法之外使用未声明的反应?

    我在我的项目中使用 usated 库 在渲染方法中 我使用set像这样 render return
  • WebGL 和 Tessellation 库?

    在 C C 中 OpenGL 有一个很好的库 用于将复杂的多边形形状细分为三角形条和扇形 该库是 GLUtesselator 是否有任何库具有与 WebGL HTML 等效的功能 GLUtesselator 已由 Google 地图的 Br
  • Git diff:忽略以单词开头的行

    据我所知here https stackoverflow com questions 53450186 git diff show only changes not matching a pattern 我们可以告诉git diff忽略以
  • 在弹出窗口中显示用户控件

    I have a button and another control placed in a usercontrol I want to pop out the control below the button to the topp o
  • 强制 C# 应用程序编译为 x64 而不是 AnyCpu

    我一直在尝试使用 C 2010 Express 在 C 应用程序中引用本机 x64 dll 我有一个从 2008 年项目转换而来的演示项目 其属性中有配置和平台选项 但我创建的新项目没有 下拉菜单根本不存在 事实上我什至无法从 调试 切换到
  • 当在 bean 内部调用该方法时,Spring AOP 不起作用

    我的应用程序中编码了几个方面 除以下内容外 所有其他内容均有效 服务接口 package com enbiso proj estudo system service public interface MessageService Messa
  • 捕获异常但使用 Sidekiq 重试

    默认情况下 sidekiq 将重试任何引发异常的作业 没事儿 但是 我希望能够捕获该异常 以便我的异常处理程序不会收到通知 然后重试该作业 我如何在反应中实现这一点 所以我的代码如下所示 def perform rescue ExcClas
  • 发送固定长度的 TCP 帧

    我需要使用 TCP 通过具有固定非标准 MTU 例如 1560 的子网发送一些数据 如果帧的长度小于 MTU 则通过该子网传输的所有以太网帧都应手动填充 0 所以 数据大小应该是 1560 sizeof IP 标头 sizeof TCP 标
  • STM32F207 I2C 测试失败

    我正在使用 STM32F207 微控制器在 STM3220G EVAL 板上学习嵌入式开发 我尝试通过连接同一芯片上的两个 I2C2 和 I2C3 模块并发送 接收字符来测试 I2C 接口 这是我当前编写的代码 使用 mdk arm 5 i
  • Pandas:使用列值的随机采样替换 NaN

    我有一个数据框 df 包含多个列 中的一些值df are NaN 我想更换每个NaN具有有效值 通过从给定列中的其他值中随机采样来选择 例如 如果 df work 4 7 NaN 4 我想更换df work 2 4 2 3 的时间和 7 1
  • Newtonsoft.Json.JsonSerializationException(从“System.Data.SqlTypes.SqlDouble”上的“Value”获取值时出错)序列化 SqlGeography

    我尝试序列化一个DataTable在数据库 SQL Server 2012 中使用 Newtonsoft Json 版本 Newtonsoft Json 10 0 3 将对象转换为 Json 该表有一列类型为 geography 其中包含类