如何让 Gson 序列化基本名称值对列表?

2023-12-14

我正在尝试使用类型适配器和 Gson 序列化 BasicNameValuePairs 列表

ArrayList<BasicNameValuePair> kvp=new ArrayList<BasicNameValuePair>();
kvp.add(new BasicNameValuePair("car","ferrari"));
kvp.add(new BasicNameValuePair("speed","fast"));

这就是我想要的结果

{"car":"ferrari","speed":"fast"}

而不是这个

[{"name":"car","value":"ferrari"},{"name":"speed","value":"fast"}]

要根据规范对其进行序列化,您需要创建一个自定义类型适配器来处理通用列表。首先创建将对输出进行正确格式化的类。

public class KeyValuePairSerializer extends TypeAdapter<List<BasicNameValuePair>> {
@Override
public void write(JsonWriter out, List<BasicNameValuePair> data) throws IOException {
    out.beginObject();
    for(int i=0; i<data.size();i++){
        out.name(data.get(i).getName());
        out.value(data.get(i).getValue());
    }
    out.endObject();
}
/*I only need Serialization*/
@Override
public List<BasicNameValuePair> read(JsonReader in) throws IOException {
    return null;
}
}

然后使用自定义 Gson 构建器来使用该类型适配器来创建正确的 JSON 字符串。

    GsonBuilder gsonBuilder= new GsonBuilder();
    gsonBuilder.registerTypeAdapter(KeyValuePairSerializer.class, new KeyValuePairSerializer());
    Gson gson=gsonBuilder.create();
    Logger.e(getClass().getSimpleName(),gson.toJson(kvp, KeyValuePairSerializer.class));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 Gson 序列化基本名称值对列表? 的相关文章

  • Android - 如何访问 onResume 中 onCreate 中实例化的 View 对象?

    In my onCreate 方法 我正在实例化一个ImageButton View public void onCreate Bundle savedInstanceState super onCreate savedInstanceSt
  • 更改工具栏中汉堡图标的大小?

    我有两个问题 可能很奇怪 但无论如何 我有带有应用程序标题的工具栏 如何将其更改为非徽标的图片 下一个问题 是否可以设置 更改工具栏中汉堡图标的大小 我在下面的下一个代码的帮助下制作了经典的导航抽屉 我也使用了 ActionBarDrawe
  • 启动 Twitter 应用程序 [重复]

    这个问题在这里已经有答案了 可能的重复 Twitter 应用程序的 Android Intent https stackoverflow com questions 2077008 android intent for twitter ap
  • Mailgun POST /messages API 总是抛出 401 禁止

    我正在尝试使用改造库在 Android 中发送 Mailgun POST messages API 请求 以下是改装要求 HTTP POSThttps api key xxx v3 sandboxxxx messages https api
  • 如何编辑 gradle 依赖项

    我正在开发一个 android 项目 该项目在我的 gradle 文件中使用以下依赖项 compile com mapzen on the road 1 1 1 我想编辑其中一个文件 以添加一些缺少的功能并为该项目做出贡献 如何下载该项目并
  • 将标题设置为操作栏时出现空指针异常

    Error Caused by java lang NullPointerException Attempt to invoke virtual method void android app ActionBar setTitle java
  • Flutter / FireStore:如何在 Flutter 中显示 Firestore 中的图像?

    我想将我在应用程序中使用的一些图像放入 Firestore 并从那里显示它们 而不是将它们作为资产捆绑在我的应用程序中 为了做到这一点 我想出了以下解决方案 对于我想要显示图像的项目 我创建了一个 Firebase 文档 其中有一个字段存储
  • Locale.getDefault().getCountry() 返回空字符串

    我正在尝试使用国家 地区代码获取用户语言 例如en US es es 但是当我使用Locale getDefault getCountry 它返回空字符串 虽然它给了我正确的语言Locale getDefault getLanguage N
  • 如何在 Android 上的 HttpPost 中发送 unicode 字符

    我试图在我的应用程序中允许多语言支持 这会发出 HTTP post 来上传新消息 我需要做什么才能支持日语和其他非拉丁语语言 我的代码目前看起来像这样 note the msg string is a JSON message by the
  • 模拟器:进程已完成,退出代码为 134(被信号 6:SIGABRT 中断)

    我最近刚刚开始在 Mac 上下载 Android Studio 版本 3 0 1 但收到以下错误 模拟器 进程已完成 退出代码为 134 被信号 6 SIGABRT 中断 我按照 Android Studio 教程操作并能够运行模拟器 但在
  • 点击监听器的公共类

    我的所有 6 项活动中有 7 个按钮 所有 6 个按钮在所有活动中都具有相同的功能 如何为这 6 个按钮执行通用的单击事件侦听器 您可以创建一个实现 View OnClickListener 的新类 如下所示 public class My
  • Android开发:未定义方法

    大家好 我是 Android 和 Eclipse 的新手 我刚刚遵循了developer android com 上的教程 现在我在添加操作栏 http developer android com training basics actio
  • 如何为 Jackson 编写一个包罗万象的(反)序列化器

    当您提前知道类型时 编写自定义序列化器非常容易 例如 MyType一个人可以写一个MyTypeSerializer extends StdSerializer
  • 如何在 WebView 中添加 JavaScript 函数并稍后在提交 reCAPTCHA 时从 HTML 调用它

    我在 WebView 中添加一个 JavaScript 函数 如下所示 Kotlin val webView findViewById R id webview as WebView webView getSettings setJavaS
  • Android:单一活动,多个视图

    我不是 Android 专业人士 尽管我开发了一个包含 50 多个活动的应用程序 这使得该应用程序非常庞大 经过8周的开发 现在出现了一些问题 导致应用程序难以维护和升级 我正在处理的主要问题是 我无法将对象引用传递给活动的构造函数 事实上
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • Jetpack Compose 部分或开放侧边框

    我正在尝试绘制部分或一侧开放的矩形圆形边框以实现此效果 玩了一下之后我得到了这个 这是通过以下方式完成的 RoundedCornerShape topStartPercent 50 bottomStartPercent 50 start R
  • ormlite 将日期读取为 'yyyy-MM-dd'

    我需要读取给我的 sqlite 数据库 因此我无法更改表中的日期格式 yyyy MM dd 当我尝试使用 ormlite 为我生成对象时 使用以下注释 DatabaseField columnName REVISION DATE dataT
  • gradle-experimental:0.1.0 buildConfigField

    谁知道怎么定义buildConfigField在实验性的 gradle 插件中 android productFlavors create demo applicationId com anthonymandra rawdroid buil
  • 修改 ADW Android 启动器?

    我想更改和修改开源 ADW 启动器 启动器可在此处获取 https github com AnderWeb android packages apps Launcher https github com AnderWeb android p

随机推荐

  • 更新:根据文件扩展名将文件从一个文件夹移动到另一个文件夹

    情况 我正在进行自动化操作 只需从一组文件中下载 CSV 文件 现在我只想将 CSV 文件从一个文件夹移动到另一个文件夹 问题 您能否向我提供代码 以便在移动文件后立即从源文件夹中删除文件 到目前为止 这是我的代码 public class
  • 当它用作自动热键中的热键时,如何将字母本身发送

    例如 我想按 v 通过自动热键获取 asdfv 但是当我定义如下时 v 发送 asdfv 脚本运行到无限循环 因为最后一个 v 被覆盖为快捷方式 所以问题是 我怎样才能得到我想要的东西 两种方式 UseHook On v send asdf
  • 在 UILabel/UITextView 中触摸单词

    我想做的是创建一个文本容器组件 该组件能够在触摸时指示最近的单词是什么 即触摸点 后面 的单词 首先 我创建了一个 UILabel 子类并重写 TouchesEnded withEvent 方法来确定触摸的 CGPoint 我还编写了一个方
  • 使用像 Spinner 这样的 jquery 增加文本输入的值

    尝试使用 Jquery 创建一个简单的旋转效果 即两个带有文本字段的按钮 向上和向下 向上按钮增加值 向下按钮减小值 增加步数 或 1 任何建议 如 ui spinner 都是最明确的 不工作 我是 jquery 新手 一定是这样的 up
  • 三星 Galaxy SIII 的相机是否存在缺陷?

    我使用以下代码启动相机 但是 有 3 4 的时间 照片没有保存到内存中 这种情况仅发生在 Galaxy SIII 上 它适用于 Nexus S 和 Nexus One public void photoNew holdingImage ge
  • 警告:内置函数“strlen”和“strcpy”的隐式声明不兼容[重复]

    这个问题在这里已经有答案了 我刚刚完成了我的刽子手游戏 作为最后一步 我正在进行一些代码清理和优化 但我似乎无法理解为什么我收到以下两个警告 警告 内置函数 strlen 的隐式声明不兼容 警告 内置函数 strcpy 的隐式声明不兼容 使
  • 如何退出独立模式或编辑器模式

    我在 Windows 10 64 位上使用 unity 5 4 1f1 Personal 我将解释我所做的所有步骤以及迄今为止我尝试过的所有事情 我第一次使用原始代码创建了一个新的 c 文件 现在 当我按 Escape 键时 它将返回编辑器
  • 内有较长任务的角间隔管道

    我的组件中有这段代码 ngOnInit this counterValue interval 1000 pipe switchMap gt this perfService getCounter this counterUrl map i
  • 为什么 $ra 被调用者保存在 RISC-V 中

    我发现在 RISC V 中 ra调用者是否已保存 以 MIPS 为单位 ra是被调用者 这意味着在 RISC V 中被调用者可以直接更改ra没有保存 但自从ra已经改变了 被调用者如何返回调用者 无论名称如何 RISC V ra 和 MIP
  • NSTimer 在 iPhone 中关闭应用程序后继续计数

    我有一个计时器 最多可以计时 8 小时 28800 秒 之后它应该被释放 我想知道如何让计时器在后台运行和 或在应用程序关闭时保持运行 这是 NSTimer stopWatchTimer NSTimer scheduledTimerWith
  • 如何在构建另一个容器期间填充 Mysql docker 容器?

    我正在尝试构建一个 docker compose 文件 该文件自动为我的应用程序构建一个容器和一个存储所有数据的 mysql 容器 在我的应用程序的 dockerfile 中 我有一个脚本 用于设置应用程序运行所需的所有数据库表和预设值 是
  • 将最近 7 天的 Windows 事件导出到 evt 文件

    很难相信我只花了一个小时在网上搜索 却找不到一个看似简单的请求的答案 我想要做的就是获取最近 7 天的 Windows 系统和应用程序事件 并将每个事件作为 evt 格式的文件导出到特定文件夹 所以不是 csv 或 xml 有没有一种简单的
  • 使用 AJAX - WooCommerce API 将变体添加到购物车?

    我有一个包含以下数据的项目 var item id 124 name xxx price 13 13 quantity 1 options size xl color pink 当用户单击 添加到购物车 时 我想使用 WC API 发出 A
  • 如果超过 12 列自动换行,我们真的需要关闭它吗?

    我已经使用 Bootstrap 一段时间了 特别是版本 3 并且注意到我仍然不确定是否应该始终在每 12 列之后关闭带有 row 类的列 或者我可以等待并在我的代码末尾应用该结束 row 只要据我所知 任何在单行中加起来超过 12 列的列都
  • 将 STUFF 与 INNER JOIN 查询结合使用

    我的数据库中有三个表 产品表 类型表和名为 Prod Type 的映射表 我的数据库是sql server 这就是为什么我不能使用group concat函数而我正在使用Stuff函数 我的表结构如下 产品表 Prod ID Name Br
  • Eclipse 构建路径不可用

    The build path option is not available when I right clicked on one of the the jars I wanted to include Anybody knows why
  • git 分支名称中的 Powershell 和德语变音符号

    我编写了一个批处理文件 它使用 powershell 命令删除除要保留的分支之外的所有本地 git 分支 如果分支名称中使用了德语变音符号 则不起作用 切换到分支 master 您的分支是最新的 origin master 已删除分支 DE
  • 如何使用 javascript 检索数组中 17 textBox 的值

    我写了下面的代码 太长了 我想要一些更短的代码 b 0 parseInt document getElementById textbox1 value b 1 parseInt document getElementById textbox
  • 从一个类访问另一个类的结构

    是否可以从另一个类访问结构 ex class A struct structOfClassA func returnLetterA gt String return a class B let classA A init classA st
  • 如何让 Gson 序列化基本名称值对列表?

    我正在尝试使用类型适配器和 Gson 序列化 BasicNameValuePairs 列表 ArrayList