首页 / JSON / 使用JSON反序列化为Java对象?
使用JSON反序列化为Java对象?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用JSON反序列化为Java对象?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2287字,纯文字阅读大概需要4分钟。
内容图文
![使用JSON反序列化为Java对象?](/upload/InfoBanner/zyjiaocheng/775/74bc62039e5f4528803726fa5e7b259d.jpg)
我必须收到以下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();
}
然后我可以使用适当的参数调用指定的方法(使用开关).
我只是想知道是否会有更简单(或更漂亮)的方法来实现这一目标.
我可以使用.fromJson()来检索一个对象,但我不知道我应该如何创建我的类(这里有类似args的数组,并不是所有方法都有相同数量的args).
我是JSON的新手(也是Java的新手).
我成功地做到了这一点:
import lotus.domino.*;
import com.google.gson.*;
import java.io.*;
import java.lang.reflect.Method;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
String jsonReceived = "{\"method\":\"methodName\",\"args\":{\"arg1Name\":\"arg1Value\",\"arg2Name\":\"arg2Value\"}}";
Gson gson = new Gson();
MethodCall mc = gson.fromJson(jsonReceived, MethodCall.class);
JavaAgent ja = new JavaAgent();
Method method = getClass().getMethod(mc.getMethod(), MethodCall.class);
String s = (String)method.invoke(ja, mc);
PrintWriter pw = getAgentOutput();
pw.println(s);
} catch(Exception e) {
e.printStackTrace();
}
}
public String methodName(MethodCall mc) {
String s = mc.getArgs().get("arg1Name") + " " + mc.getArgs().get("arg2Name");
return s;
}
}
import java.util.*;
public class MethodCall {
private String method;
private Map<String, String> args;
public String getMethod() {
return method;
}
public Map<String, String> getArgs() {
return args;
}
}
它似乎工作……但由于我是Java的新手,我不确定这是否是正确的方法.你怎么看?
解决方法:
也许Gson Map序列化器足够聪明,可以反序列化?
public class MethodCall {
private String method;
private Map<String, String> args;
}
(没有时间对它进行彻底的测试,但我希望它有效!:))
内容总结
以上是互联网集市为您收集整理的使用JSON反序列化为Java对象?全部内容,希望文章能够帮你解决使用JSON反序列化为Java对象?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。