我必须收到以下JSON: { “method”:”methodName1″, “args”:{ “arg1Name”:”arg1Value”, “arg2Name”:”arg2Value” } } 这是另一个例子: { “method”:”methodName2″, “args”:{ “arg1Name”:”arg1Value”, “arg2Name”:”arg2Value” “arg3Name”:”arg3Value” “arg4Name”:”arg4Value” } } 我需要解析那些JSON,以便使用指定的“args”作为参数调用指定的方法。 对我来说简单的方法是使用JsonParser获取JsonElement ,然后使用JsonObject ,然后使用.get()提取每个值…这样的事情: JsonParser jsonParser = new JsonParser(); JsonElement jsonElement = jsonParser.parse(jsonString); if (jsonElement.isJsonObject()) { JsonObject jsonObject = jsonElement.getAsJsonObject(); String method = jsonObject.get(“method”).getAsString(); JsonObject jsonArgs = jsonObject.getAsJsonObject(“args”); String arg1 = jsonArgs.get(“arg1Name”).getAsString(); String arg2 = jsonArgs.get(“arg2Name”).getAsString(); } […]
我正在使用NetBeans在Java中开发一个独立的应用程序,它通过串行端口获取和发送数据。 我正在使用一个很棒的串行通信API,称为java简单串行连接器http://code.google.com/p/java-simple-serial-connector/ 请下载我创建的以下NetBeans项目: http : //netload.in/dateiN9xmwRtn19.htm即使您没有netbeans,您仍然可以查看代码。 以上是我用来解释我希望完成的一个小例子项目。 该示例包含一个包含main方法的JFrame。 此JFrame包含2个面板:带导航按钮的面板和使用CardLayout显示面板1和面板2的面板。 在JFrame中,我有一个方法,使用jssc API的getPortNames()方法获取端口名称列表。 我的问题是,如何将这些端口名称字符串值从JFrame传递到我的Panel 1,而不使用以下内容,因为它不起作用:MyJFrame myjframe = new MyJFrame(); myjframe.getPortNames(); 气垫船满鳗鱼再次非常感谢你的解释,值得金。 我现在意识到我的问题是NetBeans而不是Java。 我对它不熟悉,但由于项目的规模和复杂性,我仍然更愿意使用它。 我在下面上传了2个截图,显示了我如何尝试将JFrame对象的“this”引用传递给NetBeans中的JPanel对象。 正如您在MyJFrame.java屏幕截图中看到的,NetBeans已将“this”引用标记为错误。 你能帮我解决这个问题吗? 此外,在您的解释的第一句中,您提到串行端口方法应该在单独的类中,而不是在JFrame中,因为它们是非GUI方法。 我完全同意你的意见,我更愿意这样做,因为它是正确的面向对象的方法。 但是这样做,我再次面临NetBeans中的同样问题。 我现在如何将对象引用从SerialPorts.java类传递给JFrame,JPanel等,以便我不会一直创建新的SerialPorts对象,记住我需要连接始终保持打开状态(例如没有使用SerialPorts sp = new SerialPorts();)。 非常感谢你的帮助。 在Panel 1的代码定制器中添加“this” MyJFrame.java – 编辑器将“this”引用为错误
我正在尝试编写一个pdf转换,它将包含一个包含1-up肖像页面的pdf,并创建一个新文档,但每2页合并为一个2-up横向页面 即。 下面的代码将缩小50%的内容,但我无法弄清楚如何使新页面成为景观,同时将其他页面注入肖像,并注入左上角和右中心 public static void main(String[] args) throws IOException, DocumentException, COSVisitorException { scalePages(“c:/pdf/in.pdf”, “c:/pdf/out” + new Date().getTime() + “.pdf”, 0.50f); } public static void scalePages(String inFile, String outFile, float scale ) throws IOException, COSVisitorException { PDDocument doc1 = null; try { doc1 = PDDocument.load( inFile ); List allPages = doc1.getDocumentCatalog().getAllPages(); for( int i=0; i<allPages.size(); […]
使用Java和Bouncy Castle 1.52,我可以使用以下代码通过PEM证书加载私钥。 我还有一个PKCS8格式的private.key文件。 直接使用private.key文件而不是PEM的代码是什么? String keyPath = “C:\\RSA7\\privatenopass.pem”; BufferedReader br = new BufferedReader(new FileReader(keyPath)); PEMParser pp = new PEMParser(br); PEMKeyPair pemKeyPair = (PEMKeyPair) pp.readObject(); KeyPair kp = new JcaPEMKeyConverter().getKeyPair(pemKeyPair); pp.close(); cipher.init(Cipher.DECRYPT_MODE, kp.getPrivate());
感谢有人可以指出并建议如何解析扁平管道分隔文件到JAVA Pojo。 例如。 平面文件0001 | XYZ | 120 这需要被读入POJO public class pojo { private String acct; private String customer; private int balance; } 我可以将整个输入文件作为集合读取,但是,最终会将每个标记设置为pojo成员。 相反,我想解析pojo成员。 类似于CASTOR XML映射到POJO的东西。 感谢这方面的任何帮助。 提前致谢
我正在使用JavaMail API 1.4.4发送邮件。 到目前为止,我能够发送邮件,但实际上我需要发送HTML内容,以便在收到邮件时处理html标签。 示例:如果我的消息中有表格代码,则应处理html代码并将其显示在邮件中 我的代码 import java.io.File; import java.util.* import javax.mail.* import javax.mail.internet.* import javax.activation.* class Mail { static void sendMail(mailProp) { // Get system properties Properties properties = System.getProperties() // Setup mail server properties.setProperty(“mail.smtp.host”, mailProp.host) // Get the default Session object. Session session = Session.getDefaultInstance(properties) try { // Create a default MimeMessage object. […]
我正在使用eclipse,我正在尝试对大约40行的文本文件进行排序,如下所示: 1,Terminator,1984,Schwarzenegger 2,Avatar,2009,Worthington 3,Avengers,2012,Downey 4,Starwars,1977,Hammill 5,Alien,1979,Weaver 我想通过第二个字段按字母顺序对它们进行排序,以便将文本文件更改为如下所示: 5,Alien,1979,Weaver 2,Avatar,2009,Worthington 3,Avengers,2012,Downey 4,Starwars,1977,Hammill 1,Terminator,1984,Schwarzenegger 我相当肯定我应该做一些涉及对它们进行标记的事情(我已经做过它来展示它)和一个BufferedWriter但我不能为我的生活想到一种方法来做到第二或第三场而且我觉得我错过了一些明显的东西。
对于我们的一个应用程序,我编写了一个使用java的DOM解析器的实用程序。 它基本上采用XML文件,解析它,然后使用以下方法之一处理数据以实际检索数据。 getElementByTagName() getElementAtIndex() getFirstChild() getNextSibling() getTextContent() 现在我必须做同样的事情,但我想知道使用XSLT样式表是否会更好。 向我们发送XML文件的组织不断更改其架构意味着我们必须更改我们的代码以满足这些shema更改。 我不太熟悉XSLT进程,所以我试图找出是否更好地使用XSLT样式表而不是“手动解析”。 XSLT样式表看起来很有吸引力的原因是我认为如果XML文件的架构发生变化,我只需要更改样式表吗? 它是否正确? 另一件我想知道的是两者中的哪一个(XSLT转换器或DOM解析器)性能更好。 对于手动选项,我只使用DOM解析器来解析xml文件。 XSLT转换器如何实际解析文件? 与手动解析xml文件相比,它是否包含额外的开销? 我问的原因是性能很重要,因为我将处理的数据的性质。 任何建议? 谢谢 编辑 基本上我目前正在做的是解析一个xml文件并处理一些xml元素中的值。 我不会将xml文件转换为任何其他格式。 我只是提取一些值,从Oracle数据库中提取一行并将一个新行保存到另一个表中。 我解析的xml文件只包含用于从数据库中检索某些数据的引用值。 xslt不适合这种情况吗? 如果架构发生变化,是否有更好的方法可以避免代码更改? 编辑2 对于我对XML数据所做的事情不够清楚而道歉。 基本上有一个包含一些信息的XML文件。 我从XML文件中提取此信息,并使用它从本地数据库中检索更多信息。 xml文件中的数据更像是数据库中所需数据的引用键。 然后,我使用XML文件中的特定密钥获取从XML文件中提取的内容以及从数据库中检索的内容,并将该数据保存到另一个数据库表中。 我遇到的问题是我知道如何编写一个DOM解析器来从XML文件中提取我需要的信息,但我想知道是否使用XSLT样式表是一个更好的选择,因为如果架构更改我不会更改代码。 阅读下面的回复听起来像XSLT仅用于转换和XML文件到另一个XML文件或其他格式。 鉴于我不打算转换XML文件,可能不需要添加解析XSLT样式表以及XML文件的额外开销。
编辑 :这里有一些解释为什么被接受的答案对我有用,可能对其他人来说可能是个问题。 在我的foo-app-servlet.xml中,我有这一行: 当我之前使用spring2时,我的所有服务bean都来自applicationContext.xml,但现在它们直接被引入foo-app-servlet.xml。 在我的项目中,servlet有自己的一组覆盖,因此我需要覆盖servlet覆盖文件而不是applicationContext覆盖文件。 覆盖时,如果你没有命名你的组件,那么它确实使用它的小写版本,所以要覆盖OrderService.foo,你这样做: orderService.foo=bar 结束编辑 我正在开发一个从spring 2.5升级到spring 3的项目,因此同时具有xml和基于注释的配置。 我们以前使用PropertyOverrideConfigurer来更改不同环境中的属性,以取得巨大成功。 我现在正在研究使用authorize.net的代码,我需要确保不从开发环境向他们发送任何内容。 为了实现这一点,我想用PropertyOverrideConfigurer覆盖我的’testMode’属性。 这适用于通过xml配置的bean,但我无法弄清楚如何使用注释配置的类来完成它。 这是我在applicationContext.xml中的覆盖片段: 这是具有我想要覆盖的属性的类: @Component public class OrderService { private static Log logger = LogFactory.getLog(OrderService.class); @Autowired @Qualifier(“OrderDAO”) private OrderDAO orderDao; @Autowired private SiteManager siteManager; String authorizenetProperties = “classpath:authorizenet.properties”; private Boolean testMode = false; public Boolean getTestMode() { return testMode; } public void […]
TLDR; 是通过String类以String.valueOf(charArray);的forms解析char数组String.valueOf(charArray); 比制作String类的对象更安全吗? 我正在尝试理解/扩展其中的讨论: 为什么char []首选String而不是密码? 我刚刚读了很多关于如何在Java中“安全地”处理密码的问题,但仍有一个问题我不太清楚如何解决。 当您从jPasswordField获取密码时,它将作为一个字符数组。 这很好,因为你可以更容易用零覆盖数组,而不是等待垃圾收集器来清除像字符串等诸如此类的东西。 我的问题在于:当我想在SQL中运行更新语句来更新密码时,我根本无法输入字符数组,因为格式错误。 当我做像Arrays.toString(arrayName); 我用格式得到它: [e, a, c, h, o, f, t, h, e, l, e, t, t, e, r, s] 我可以将它放入数据库列的唯一方法是……让我们说VARCHAR(100)没有所有的逗号和空格似乎是这样写的: String stringPassword=””; int i=0; for(char a:newPassword){ stringPassword=stringPassword+newPassword[i]; i++; } 如果我做这样的事情,我是否已经破坏了使用字符数组的全部意义? 谷歌搜索并没有真正帮助我解决这个问题。 在此先感谢您的时间。 编辑1:感谢KKaar提供可能的解决方案: char[] passwordArray; String.valueOf(passwordArray); 这对于我需要它的目的来说效果很好,但是我仍然不知道它是否安全。 如果我在preparedStatement语法中创建String.valueOf(passwordArray) ,它不会生成变量,但它仍然通过String类解析值。 这是否意味着它仍处于危险之中,还是安全的?