Rails:如何将对象数组的哈希转换为 json

     2023-02-15     48

关键词:

【中文标题】Rails:如何将对象数组的哈希转换为 json【英文标题】:Rails: How to convert hash of array of objects to json 【发布时间】:2021-12-03 16:20:18 【问题描述】:

我是一名 java 和 Js 开发人员,所以我对 rails 和 ruby​​ 完全陌生。在我的一个项目中,我使用 rails 来使用 api 并返回到 js。我正在将 api 响应转换为 ruby​​ 中的模型。

现在,格式为KEY1=>[array of objects(my model)], KEY2=>[array of objects(my model)]

模型的键也在snake_case中。我的要求是循环遍历并使用驼峰键将其转换为 JSON。

转模型后的Api响应: KEY1=>[@person_name:"abc", @person_id="123"],KEY2:[@personName:"bca", @person_id="231"]

所需输出: KEY1:[personName:"abc", personId:"123"],KEY2:[personName:"bca",personId:"231"]

到目前为止,我尝试使用 .map 和 .transform_values,但不知道我做错了什么。

感谢任何帮助。

【问题讨论】:

次要注意:您想要的输出不是有效的 JSON 只需使用 JSON.generate 将您的哈希转换为 JSON。 ruby-doc.org/stdlib-3.0.0/libdoc/json/rdoc/… 它是否负责将密钥转换为驼峰式? @dbugger @AbhishekP - 澄清一下,您想将模型列表转换为 json,并使用 camelcase 转换所有键? 是的,正是@BroiSatse 【参考方案1】:

你可以这样做:

 
  KEY1: Person.where(...).select(:name, :id).map  |p| Hash[p.serializable_hash.map  |key, value| ["#p.model_name.name.downcase#key.capitalize", value] ] , 
  KEY2: Person.where(...).select(:name, :id).map  |p| Hash[p.serializable_hash.map  |key, value| ["#p.model_name.name.downcase#key.capitalize", value] ] 
.to_json

【讨论】:

【参考方案2】:

您可以将以下内容添加到您的 ApplicationRecord 类中:

class ApplicationRecord < ActiveRecord::Base
  def serializable_hash(options = )
    hash = super
    return hash unless options[:camelize]

    hash.deep_transform_keys  |key| key.to_s.camelize(options[:camelize]) 
  end
end

这将允许您在几乎任何对象上调用to_json(camelize: :lower)


  KEY1: Person.where(...),
  KEY2: Person.where(...),
.to_json(camelize: :lower)

自动序列化整个集合

【讨论】:

如何将 JSON 转换为 Ruby 哈希

】如何将JSON转换为Ruby哈希【英文标题】:HowtoconvertJSONtoaRubyhash【发布时间】:2011-12-1908:10:46【问题描述】:我有一个JSON对象包含以下值:@value="val":"test","val1":"test1","val2":"test2"我想在Ruby中遍历它以获取键/值对。当我使用@each时... 查看详情

如何将多维数组转换为json对象[关闭]

】如何将多维数组转换为json对象[关闭]【英文标题】:Howtoconvertmultidimensionalarrayintojsonobject[closed]【发布时间】:2015-09-1914:57:05【问题描述】:我在数组到json的转换中遇到问题,我有一个数组,我想将此数组转换为json对象,下面... 查看详情

如何将 json 数组转换为 json 对象?

】如何将json数组转换为json对象?【英文标题】:Howcanconvertanarrayofjsonstoajsonobject?【发布时间】:2016-12-2320:08:00【问题描述】:我对json的特定部分(更具体的数组)做了一些更改,完成后我想将更改保存在json中,但我不能,因为... 查看详情

如何将对象响应对象的猫鼬聚合数组转换为json对象响应

】如何将对象响应对象的猫鼬聚合数组转换为json对象响应【英文标题】:Howcaniconvertthemongooseaggregationarrayofobjectofobjectresponseintojsonobjectresponse【发布时间】:2022-01-2123:08:09【问题描述】:我让你在nodejs中进行mongoose聚合以获取文档... 查看详情

如何以角度将 JSON 对象数组转换为 Observable 数组

】如何以角度将JSON对象数组转换为Observable数组【英文标题】:HowtoconvertJSONArrayofObjectstoObservableArrayinangular【发布时间】:2020-08-0121:55:29【问题描述】:我正在从Angular调用一个restAPI,restapi返回JSON对象数组中的数据,如下所示现... 查看详情

如何将嵌套的 JSON 对象转换为数组 Spring Boot?

】如何将嵌套的JSON对象转换为数组SpringBoot?【英文标题】:HowdoiturnanestedJSONobjecttoanarraySpringboot?【发布时间】:2021-05-2711:44:46【问题描述】:我目前正在构建一个React/Springboot应用程序,我的目标是从数组中返回单个对象,但对... 查看详情

GSON。如何将json对象转换为json数组?

】GSON。如何将json对象转换为json数组?【英文标题】:GSON.Howtoconvertjsonobjecttojsonarray?【发布时间】:2016-05-0703:13:34【问题描述】:现在我从API获取这个JSON:"supplyPrice":"CAD":78,"CHF":54600.78,"USD":20735.52但价格是动态的,这就是我需要... 查看详情

如何将普通的 JS 数组转换为 JSON 对象

】如何将普通的JS数组转换为JSON对象【英文标题】:HowtoconvertnormalJSarraytoJSONObject【发布时间】:2021-06-0714:56:58【问题描述】:我当前的数组是这样的[\'service1\',\'service2\',\'service3\']我需要把它转换成like[\'id\':\'1\',\'serviceName\':\'serv... 查看详情

如何将 c# 二维数组转换为 JSON 对象?

】如何将c#二维数组转换为JSON对象?【英文标题】:HowdoIconvertac#two-dimensionalarraytoaJSONobject?【发布时间】:2010-11-2010:28:15【问题描述】:如果我在C#中有一个二维数组-如何将其转换为包含二维数组的JSON字符串?例如。int[,]numbers=n... 查看详情

如何将 json 对象键转换为不同的数组来删除重复项

】如何将json对象键转换为不同的数组来删除重复项【英文标题】:Howtoconvertjsonobjectkeysintodifferentarraysremovingtheduplicate【发布时间】:2021-12-1120:33:18【问题描述】:我有这样的JSON,我需要将此JSON与JSON对象中的所有键分组,值应该... 查看详情

如何将数组转换为 json 对象? [复制]

】如何将数组转换为json对象?[复制]【英文标题】:HowtoconvertArrayintojsonobject?[duplicate]【发布时间】:2015-10-0215:20:26【问题描述】:动态地,我收到了array。例如,我们可以考虑以下array。varsampleArray=["logo","Details","titles"];但我想要... 查看详情

如何将字符串数组转换为 JSON 对象?

】如何将字符串数组转换为JSON对象?【英文标题】:HowtoconvertarrayofstringsintoJSONobject?【发布时间】:2021-05-1204:27:51【问题描述】:我需要在不丢失过滤条件的情况下返回列表页面。为此,我使用cookie,在提交表单过滤器时设置它... 查看详情

如何使用 Gson 和 Retrofit 将类似的 Json 对象转换为 Json 数组

】如何使用Gson和Retrofit将类似的Json对象转换为Json数组【英文标题】:HowtoconvertsimilarJsonobjectstoJsonArrayswithGsonandRetrofit【发布时间】:2021-07-1102:58:48【问题描述】:假设我收到来自API的以下响应"success":true,"base":"EUR","date":"2021-04-16",... 查看详情

如何在 Android 的 Kotlin 中使用 GSON 将 JSON 对象转换为 JSON 数组

】如何在Android的Kotlin中使用GSON将JSON对象转换为JSON数组【英文标题】:HowtoConvertaJSONObjecttoJSONArrayusingGSONinKotlininAndroid【发布时间】:2021-06-1810:28:02【问题描述】:您好,我是Kotlin和Android的新手,我想解析JSONObject并将其转换为Arr... 查看详情

React:如何将 JSON 对象转换为数组并渲染它?

】React:如何将JSON对象转换为数组并渲染它?【英文标题】:React:HowtoconvertJSONObjecttoArrayandrenderit?【发布时间】:2019-11-2207:43:55【问题描述】:我有一个包含英雄联盟冠军信息的大型本地JSON文件。我想输出随机冠军数据(姓名、... 查看详情

如何将 Kotlin 对象数组转换为 json 数组并保留访问键名称?

】如何将Kotlin对象数组转换为json数组并保留访问键名称?【英文标题】:HowtoconvertanKotlinarrayofobjectsintojsonarraywithpreservingaccesskeynames?【发布时间】:2021-12-1220:06:11【问题描述】:我有一个API,它要求json请求采用特定的数组形式,... 查看详情

如何在 Rails 中将 Javascript 对象转换为 JSON?

】如何在Rails中将Javascript对象转换为JSON?【英文标题】:HowtoconvertaJavascriptobjecttoJSONinRails?【发布时间】:2021-10-3105:17:48【问题描述】:我有一个部分Javascript对象,如下所示:_chart.js.erbchart:animation:<%=@animation%>,plotOptions:...这... 查看详情

如何将具有多个相同键的字符串数组转换为 JSON 对象?

】如何将具有多个相同键的字符串数组转换为JSON对象?【英文标题】:HowtoconvertarrayofsrtingwithmultiplesamekeystoJSONObject?【发布时间】:2021-06-0920:46:42【问题描述】:我有一个从查询字符串中提取的数组,如下所示:vararr=\'field1=12345&... 查看详情