我想从类dismiss()
中获取此json:
class DualSelectionDialogFragment : DialogFragment() {
private var input: AutoCompleteTextView? = null
[...]
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
[...]
val builder = AlertDialog.Builder(context!!)
val content = activity?.layoutInflater?.inflate(R.layout.select_dual_mode, null)
[...]
input = content?.findViewById<AutoCompleteTextView>(R.id.dual_autocomplete_input)?.apply {
setAdapter(ArrayAdapter(context, android.R.layout.simple_list_item_1, [...]))
setOnItemClickListener { _, view, _, _ ->
[...]
hideKeyboard(context, this)
dismiss()
}
}
[...]
builder.setView(content).setCustomTitle(title)
return builder.create()
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
dialog.window.setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE +
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
}
[...]
fun hideKeyboard(context: Context, view: View) {
(context.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager).hideSoftInputFromWindow(view.windowToken, 0)
}
}
这是课程:
User
但是我有一个错误的json:
{
"id" : "1234",
"campaignId" : {
"campaignId" : "whatever"
}
}
如您所见,第一级CampaignId是字符串,而不是包含campaignId键的对象。
如何在不创建另一个POJO的情况下实现这一目标?
答案 0 :(得分:2)
我想从User类中获取此json:...
“ campaignId”:{ “ campaignId”:“随便什么”
...
私有字符串campaignId;
这些东西根本不在一起。
如果您的要求是campaignId应该是嵌套结构(如地图),则相应地 model 。
换句话说:“ bean”中的类型应该不是String
之外的其他类型。例如,一张地图。或者,也许是一些具有单个成员且是字符串的自写类。
对您的读者而言,其他任何事情都非常令人困惑。您的代码应传达您的意图。而且,作为字符串的字段不是地图。
这就像在说:“看这里,我可爱的猫”,实际上,你有一只狗,但是你强迫他穿上小猫服装,看起来像只猫。
答案 1 :(得分:-1)
我解决了返回Map而不是String的问题:
public Map<String, String> getCampaignId() {
Map<String, String> c = new HashMap<>();
c.put("campaignId", campaignId);
return c;
}
这是可行的,但是如果有人知道如何使用杰克逊注释或其他更优雅的解决方案,我会接受。