我有一个Java对象,我想将其输出为JSON字符串.但我想避免在Java对象中打印出属性.我知道我可以使用GsonBuilder的excludeFieldsWithoutExposeAnnotation()方法来做到这一点.但是,我想我会尝试在打印之前从JsonObject中删除属性的替代方法.以下代码有效:
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd' 'HH:mm:ss").create();
String javaObjectString = gson.toJson(javaObject);
//javaObjectString currently include "property":"value"
JsonElement jsonElement = gson.toJsonTree(javaObjectString, javaObject.getClass());
JsonObject jsonObject = (JsonObject) jsonElement;
jsonObject.remove("property");
javaObjectString = gson.toJson(jsonObject);
//javaObjectString currently no longer includes "property":"value"
Run Code Online (Sandbox Code Playgroud)
但是,它感觉很糟糕,因为我必须将Java对象输出到String,然后从String创建一个JsonElement,然后将JsonElement转换为JsonObject.
有没有更直接的方法从Java对象转到JsonObject?
几天前我问了一个问题(使用Windows身份验证从非域计算机访问SQL Server 2005),这提出了一些有趣但不可用的建议.我想再次提出这个问题,但要弄清楚我的约束是什么:
我有一个Windows域,其中一台机器运行SQL Server 2005,并配置为仅支持Windows身份验证.我想在同一网络上的计算机上运行C#客户端应用程序,但不在域上,并访问SQL Server 2005实例上的数据库.
我不能在任何一台机器上创建或修改操作系统或SQL Server用户,我也不能对权限或模拟进行任何更改,我也不能使用runas.
我知道我可以使用以下四个参数编写可以连接到SQL Server数据库的Perl和Java应用程序:服务器名称,数据库名称,用户名(域名为domain\user)和密码.
在C#中,我尝试过各种各样的事情:
string connectionString = "Data Source=server;Initial Catalog=database;User Id=domain\user;Password=password";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
Run Code Online (Sandbox Code Playgroud)
并尝试将集成安全性设置为真假,但似乎没有任何效果.我想在C#中做什么根本不可能?
感谢任何帮助,马丁
我在我的一个Windows机器上运行应用程序时遇到问题.我无法在其他类似的Windows机器上复制它,它刚刚开始发生.情况如下:
使用Visual Studio,我可以构建一个我编写的应用程序.它构建了一个可执行文件:Application.exe,我可以在它的bin/Debug目录中看到这个可执行文件以及我知道该应用程序所依赖的所有DLL,包括Microsoft.Windows.Azure.Configuration.dll.
当我运行应用程序时,应用程序停止运行,当我来调查问题时,我可以看到Microsoft.Windows.Azure.Configuration.dll已重命名为Microsoft.WindowsAzure.Configuration.dll.5502888.DeletePending. 5502888.DeletePending.5502904.DeletePending.5502919.DeletePending.5502935.DeletePending.5502950.DeletePending
我以前从未见过这种行为,虽然我已经在这台机器上运行了一年左右的相同应用程序.有谁知道会发生什么?
谢谢你的帮助.
在我的Android活动中,我创建了一个扩展SurfaceView的自定义视图(使用MonoDroid,语法略有不同):
class FriendsView : SurfaceView
{
...
public FriendsView(Context context) : base(context)
{
... create my custom view ...
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Activity类中,我将内容视图设置为视图:
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FillParent, ViewGroup.LayoutParams.FillParent);
FriendsView friendsView = new FriendsView(this);
SetContentView(friendsView, layoutParams);
}
Run Code Online (Sandbox Code Playgroud)
我想在视图中添加一个按钮,但无法解决如何执行此操作.我读过的所有内容都是从main.xml的角度出发的,但是我没有看到如何使用它来声明一个在我的视图中可见的按钮.同样,我无法在Activity或View类中找到一个方法,它允许我以编程方式添加Button对象.
我确信我在概念上遗漏了一些东西,但欢迎任何帮助让我朝着正确的方向前进.
我正在努力理解配置 log4net 以在 .Net Core 3.1 应用程序中使用的最简单方法。该应用程序使用的是 log4net 2.0.8。所以:
有没有办法使用 application.runtimeconfig.json 文件来配置来做到这一点?如果是这样,我会向应用程序添加什么代码来告诉它使用这些设置 - 例如:
log4net.Config.XmlConfigurator.Configure();
Run Code Online (Sandbox Code Playgroud)
如果这是不可能的,那么添加配置文件(比如 log4net.xml)并告诉应用程序使用它的最简单方法是什么?
我想暂时将所有日志记录定向到一个文件,比如 Temp.log。我看过很多 log4net 页面,但他们要么谈论使用在新的 .Net Core 3.1 项目中不存在的 Assembly.Info.cs,要么似乎以编程方式设置了我想避免的 log4net 配置。我原以为这很容易,所以如果我错过了一个明显的方法,我深表歉意。
我正在使用Eclipse编写和调试Android应用程序.我需要做的一件事是更新设备的位置,所以我尝试使用模拟器控制窗口中的位置控制面板.在"手动"选项卡上,选择"十进制",输入有效的纬度和经度,然后单击"发送".
不幸的是,接下来发生的事情是模拟器崩溃(下面的logcat输出).这是一个已知问题,如果有,是否有解决方法?感谢任何帮助,马丁
02-13 08:54:23.128: INFO/DEBUG(30): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
02-13 08:54:23.128: INFO/DEBUG(30): Build fingerprint: 'generic/sdk/generic:2.3.3/GRI34/101070:eng/test-keys'
02-13 08:54:23.138: INFO/DEBUG(30): pid: 74, tid: 219 >>> system_server <<<
02-13 08:54:23.138: INFO/DEBUG(30): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
02-13 08:54:23.138: INFO/DEBUG(30): r0 00000000 r1 4081c038 r2 41ae0114 r3 473d9c74
02-13 08:54:23.148: INFO/DEBUG(30): r4 0000012e r5 00000000 r6 4081c038 r7 41ae0114
02-13 08:54:23.148: INFO/DEBUG(30): r8 80701321 r9 80702240 10 00100000 …
Run Code Online (Sandbox Code Playgroud) 我是Maven的新用户,并且很难让buildnumber-maven-plugin达到我的期望。本质上,我希望maven构建项目并创建结果的JAR文件,并在manifest.mf文件中设置内部版本号。我将在下面包含大部分pom.xml文件。我已经发布了一个相关的问题,但是这个问题是关于另一个问题的!
当我运行mvn clean compile软件包时,我看到以下错误:
[ERROR] Failed to execute goal org.codehaus.mojo:buildnumber-maven-plugin:1.4:create (buildnumber) on project xcase: Execution buildnumber of goal org.codehaus.mojo:buildnumber-maven-plugin:1.4:create failed: The scm url cannot be null. -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
我已经将doCheck和doUpdate都设置为false,所以不知道为什么要参与SCM。我的解决方法是添加一些虚拟SCM配置,但这感觉很笨拙。有没有更好的办法?
<scm>
<connection>scm:svn:http://127.0.0.1/dummy</connection>
<developerConnection>scm:svn:https://127.0.0.1/dummy</developerConnection>
<tag>HEAD</tag>
<url>http://127.0.0.1/dummy</url>
</scm>
Run Code Online (Sandbox Code Playgroud)
这是我的pom.xml文件的build部分:
<build>
<outputDirectory>build</outputDirectory>
<plugins>
<plugin>
<artifactId>buildnumber-maven-plugin</artifactId>
<configuration>
<buildNumberPropertyName>buildNumber</buildNumberPropertyName>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<format>{0,number,integer}</format>
<items>
<item>buildNumber</item>
</items>
<revisionOnScmFailure>true</revisionOnScmFailure>
</configuration>
<executions>
<execution>
<goals>
<goal>create</goal>
</goals>
<id>buildnumber</id>
</execution>
</executions>
<groupId>org.codehaus.mojo</groupId>
<version>1.4</version>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/build</outputDirectory>
<resources>
<resource>
<directory>${basedir}</directory>
<filtering>true</filtering>
<excludes> …
Run Code Online (Sandbox Code Playgroud) 如果这是一个非常天真的问题,请道歉.我之前用.Net 4.5编写了一个Windows Form应用程序.最近,我认为使用VS Code将它移植到.Net Standard 2.0应用程序是个好主意.
缺少库和类存在一些问题(System.ServiceModel是最大的差距),但我已经到了成功构建应用程序的程度.但是,当我来运行它时,我看到以下错误:
Unhandled Exception: System.BadImageFormatException: Could not load file or assembly 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) ---> System.BadImageFormatException: Cannot load a reference assembly for execution.
Run Code Online (Sandbox Code Playgroud)
这是项目文件,如果它有用:
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<PackageReference Include="log4net" Version="2.0.8" />
<PackageReference Include="Microsoft.CSharp" Version="4.4.0" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
<PackageReference Include="NUnit" Version="3.8.1" />
<PackageReference Include="System.CodeDom" Version="4.4.0" />
<PackageReference Include="System.Configuration" Version="2.0.5" />
<PackageReference …
Run Code Online (Sandbox Code Playgroud) 我有一个Windows域,其中一台机器运行SQL Server 2005,并配置为仅支持Windows身份验证.我想在同一网络上的计算机上运行C#客户端应用程序,但不在域上,并访问SQL Server 2005实例上的数据库.
我认为做这样的事情会很简单:
string connectionString = "Data Source=server;Initial Catalog=database;User Id=domain\user;Password=password";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
Run Code Online (Sandbox Code Playgroud)
但是,这失败了:客户端错误是:
System.Data.SqlClient.SqlException:用户'domain\user'登录失败,服务器端错误为:错误18456,严重级别14,状态5
我尝试了各种各样的事情,包括将集成安全性设置为true和false,以及\而不是用户ID中的\,但没有成功.
一般来说,我知道可以从非域计算机连接到SQL Server 2005实例(例如,我正在使用基于Linux的应用程序,很高兴这样做),但我似乎无法找出如何从Windows机器上做到这一点.
当我尝试使用 JDBC 驱动程序访问数据库时,我发现一些奇怪的行为。这是代码片段:
LOGGER.debug("driver is " + driver);
try {
Class.forName(driver);
LOGGER.debug("got driver");
} catch (Throwable t) {
LOGGER.debug("throwable getting driver " + driver);
t.printStackTrace(System.out);
throw t;
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,这是我在堆栈跟踪中看到的内容。
08:20:00.417 [main] DEBUG - driver is com.sybase.jdbc4.jdbc.SybDriver
08:20:00.604 [main] DEBUG - throwable getting driver com.sybase.jdbc4.jdbc.SybDriver
java.lang.NoClassDefFoundError: Could not initialize class oracle.jdbc.OracleDriver
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at java.sql/java.sql.DriverManager.isDriverAllowed(DriverManager.java:555)
at java.sql/java.sql.DriverManager.isDriverAllowed(DriverManager.java:547)
at java.sql/java.sql.DriverManager.getDrivers(DriverManager.java:449)
at java.sql/java.sql.DriverManager.getDrivers(DriverManager.java:426)
at com.sybase.jdbc4.jdbc.SybDriver.registerWithDriverManager(Unknown Source)
at com.sybase.jdbc4.jdbc.SybDriver.<init>(Unknown Source)
at com.sybase.jdbc4.jdbc.SybDriver.<clinit>(Unknown Source)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
... my code …
Run Code Online (Sandbox Code Playgroud)