代码之家  ›  专栏  ›  技术社区  ›  Robert

使用JSON或哈希时,将NULL替换为NIL

  •  0
  • Robert  · 技术社区  · 5 月前

    我有以下JSON,我试图替换 null 具有 nil 因为ruby不能编译它。

    我得到以下错误 undefined local variable or method "null" for main:Object (NameError) .

    报警描述和单位为 无效的 .

    我该如何解决这个问题?

    jsondata = {
      AlarmName: "Zabbix PY 5XX - By Stage QA",
      AlarmDescription: null,
      AWSAccountId: "123456",
      NewStateValue: "ALARM",
      NewStateReason:
        "Threshold Crossed: 1 out of the last 1 datapoints [1.0 (06/11/21 12:16:00)] was greater than or equal to the threshold (1.0) (minimum 1 datapoint for OK -> ALARM transition).",
      StateChangeTime: "2021-11-06T12:17:43.811+0000",
      Region: "Asia Pacific (Mumbai)",
      AlarmArn: "arn:aws:cloudwatch:ap-south-1:123456:alarm:Zabbix PY 5XX - By Stage QA",
      OldStateValue: "INSUFFICIENT_DATA",
      Trigger: {
        MetricName: "5XXError",
        Namespace: "AWS/ApiGateway",
        StatisticType: "Statistic",
        Statistic: "MINIMUM",
        Unit: null,
        Dimensions: [
          { value: "zabbixPy-API", name: "ApiName" },
          { value: "qa", name: "Stage" },
        ],
        Period: 60,
        EvaluationPeriods: 1,
        ComparisonOperator: "GreaterThanOrEqualToThreshold",
        Threshold: 1,
        TreatMissingData: "- TreatMissingData: missing",
        EvaluateLowSampleCountPercentile: "",
      },
    }
    
    puts jsondata
    

    错误:

    Output:
    
    HelloWorld.rb:6:in `<main>': undefined local variable or method `null' for main:Object (NameError)
    
      AlarmDescription: null,
    
    1 回复  |  直到 5 月前
        1
  •  0
  •   Eloi    5 月前

    再说一遍,我一直在尝试一些事情。告诉我这能不能解决你的问题。

    
    texte = %q(
    {
      AlarmName: "Zabbix PY 5XX - By Stage QA",
      AlarmDescription: null,
      AWSAccountId: "123456",
      NewStateValue: "ALARM",
      NewStateReason:
        "Threshold Crossed: 1 out of the last 1 datapoints [1.0 (06/11/21 12:16:00)] was greater than or equal to the threshold (1.0) (minimum 1 datapoint for OK -> ALARM transition).",
      StateChangeTime: "2021-11-06T12:17:43.811+0000",
      Region: "Asia Pacific (Mumbai)",
      AlarmArn: "arn:aws:cloudwatch:ap-south-1:123456:alarm:Zabbix PY 5XX - By Stage QA",
      OldStateValue: "INSUFFICIENT_DATA",
      Trigger: {
        MetricName: "5XXError",
        Namespace: "AWS/ApiGateway",
        StatisticType: "Statistic",
        Statistic: "MINIMUM",
        Unit: null,
        Dimensions: [
          { value: "zabbixPy-API", name: "ApiName" },
          { value: "qa", name: "Stage" }
        ],
        Period: 60,
        EvaluationPeriods: 1,
        ComparisonOperator: "GreaterThanOrEqualToThreshold",
        Threshold: 1,
        TreatMissingData: "- TreatMissingData: missing",
        EvaluateLowSampleCountPercentile: ""
      }
    }
    )
    
    texte = texte.gsub('null', 'nil')
    ruby_hash = eval(texte)
    
    puts ruby_hash.inspect
    puts "----"
    puts ruby_hash[:Trigger][:EvaluationPeriods]