小编bel*_*ros的帖子

使用 JSON.parse 解析 OpenStruct 或哈希

我试图解析这样一个简单的 JSON:

JSON.parse({"pong": "ok"})
Run Code Online (Sandbox Code Playgroud)

它失败了

2.4.0 :014 > JSON.parse({"pong": "ok"})
TypeError: no implicit conversion of Hash into String
    from (irb):14
Run Code Online (Sandbox Code Playgroud)

这里有什么问题?为什么要转换为 String ?

另一个尝试,这次使用OpenStruct

2.4.0 :001 > pong = OpenStruct.new(pong: 'OK')
 => #<OpenStruct pong="OK"> 
2.4.0 :002 > JSON.parse(pong)
TypeError: no implicit conversion of OpenStruct into String
    from (irb):2
Run Code Online (Sandbox Code Playgroud)

相同 ?谢谢

ruby json hashmap openstruct

1
推荐指数
1
解决办法
1700
查看次数

更新具有相同图像的模型时 ActiveSupport::MessageVerifier::InvalidSignature 错误

在不更改图像的情况下更新包含附加图像的模型时,我无法弄清楚出现错误的原因:

Processing by PostsController#update as JSONAPI
  Parameters: {"data"=>{"id"=>"28", "attributes"=>{"title"=>"post-1", "body"=>"azertyui", "archived"=>true, "tag_ids"=>[11, 12, 13], "photo"=>"http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBFZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--86e7464f36c2eddf776573af7b9e61d969287158/diagram.png"}, "type"=>"posts"}, "id"=>"28"}
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:

Completed 500 Internal Server Error in 5ms (ActiveRecord: 0.5ms)
ActiveSupport::MessageVerifier::InvalidSignature (ActiveSupport::MessageVerifier::InvalidSignature):
app/controllers/posts_controller.rb:30:in `update'
Run Code Online (Sandbox Code Playgroud)

这是控制器更新操作代码:

def update
    if @post.update(post_params)
      render json: @post
    else
      respond_with_errors @post
    end
  end
Run Code Online (Sandbox Code Playgroud)

这是PostSerializer看起来的样子:

class PostSerializer < ActiveModel::Serializer
  include Rails.application.routes.url_helpers

  attributes :id, :title, :body, :tag_ids, :archived, :photo

  def photo
    rails_blob_url(object.photo) if object.photo.attached?
  end
end
Run Code Online (Sandbox Code Playgroud)

我正在使用 Rails 5.2.0 API。我错过了什么?

ruby-on-rails rails-api

1
推荐指数
1
解决办法
3528
查看次数

如何使用 spring-batch 和 JsonItemReaderBuilder 从外部 API 获取 JSON 数据

我遵循了Spring Batch 文档,该文档有效并且足够简单和平庸,但仍然无法弄清楚如何应用相同的技术从外部 API 获取 JSON 数据。据我了解,我必须使用JsonItemReaderBuilder并定义reader方法来返回实例,JsonItemReader如下所示:

@Configuration
@EnableBatchProcessing
public class BatchConfiguration {

    @Autowired
    public JobBuilderFactory jobBuilderFactory;

    @Autowired
    public StepBuilderFactory stepBuilderFactory;

    @Bean
    public JsonItemReader<Person> reader() {
        return new JsonItemReaderBuilder<Person>()
                .name("personItemReader")
                .build();
    }
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是如何替换.resource(new ClassPathResource("sample-data.csv"))上面示例中仅读取 CSV 文件的行?我想我必须传入 JSON 数据作为InputStream实例或类似的东西?我应该传入什么样的资源?谢谢。

spring-batch

1
推荐指数
1
解决办法
2207
查看次数

Ruby:将字符串转换为嵌套数组的整数值

我不明白为什么下面的表达式不能将字符串转换为整数:

[["1", "2"], ["10", "20"]].each {|sr| sr.map(&:to_i)}
=> [["1", "2"], ["10", "20"]]
Run Code Online (Sandbox Code Playgroud)

因此,我没有得到嵌套的整数数组,而是得到了相同的String值。任何的想法 ?

谢谢。

美国Ruby版本: 2.6.1

ruby

0
推荐指数
1
解决办法
89
查看次数