Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中从未知参数和未知数量的参数构建Json?_Java_Json_Reflection_Jersey_Jackson - Fatal编程技术网

如何在java中从未知参数和未知数量的参数构建Json?

如何在java中从未知参数和未知数量的参数构建Json?,java,json,reflection,jersey,jackson,Java,Json,Reflection,Jersey,Jackson,我有不同的命令: Command1(String name, Integer age) extends BasicCommand Command2(String address, Info cityInfo) extends BasicCommandWithException// Info is a class containing 2 fields : city name and city size Command3(CountryInfo countryInfo, String conti

我有不同的命令:

Command1(String name, Integer age) extends BasicCommand
Command2(String address, Info cityInfo)  extends BasicCommandWithException// Info is a class containing 2 fields : city name and city size
Command3(CountryInfo countryInfo, String continent) extends BasicCommandWithCityNameAndException

[BasicCommandWithCityNameAndException extends BasicCommandWithException extends BasicCommand]
我不能为扩展添加新的抽象类,所以我想到了一个包含命令和参数的包装器。我希望能够将传递的参数转换为json,我将有如下内容:

Wrapper c = new Wrapper(Command1 ("hello", 55))
cityInfo cit = new cityInfo("city", 1000)
Wrapper b = new Wrapper(Command2("myAddress", cit))

String x = c.getJsonFromParams
will print:
{
   "name" : "hello",
   "age" : 55
}

String y = b.getJsonFromParams
will print:
{
    "address" : "myAddress",
    "cityInfo": {
                 "cityName" : "city",
                 "citySize" : 1000
                }  
}
不知道从哪里开始。 我不知道如何传递这些参数,因为您可以更改这些参数(类型、数量等)
您能提出建议吗?

有什么理由不使用流行的JSON编组库吗?Jackson:
String json=objectMapper.writeValueAsString(command)
但“command”不需要是类吗?例如,如果我传递命令(x,y,z),我将不得不创建类A{x,y,z},如果我传递命令(r,t),我将不得不创建类B{r,t}-我如何在运行时创建这些类?我不知道哪些命令将被传递不,“command”将是一个对象而不是一个类<代码>命令=新命令1(“Ed”,21);字符串json=objectMapper.writeValueAsString(命令)NB您的示例似乎缺少
new
关键字。和分号
Wrapper c=newwrapper(newcommand1(“hello”,55))
刚刚修复了它。谢谢-我现在就试试:)