2015-07-27 1 views
0

Я пытаюсь добавить строку JSON в файл JSON, который уже имеет данные JSON.Добавить строку JSON в файл, который уже содержит JSON

/public/temp.json:

{ 
    "IPBlock":"1.2.0.0/16,1.2.0.0/16,1.2.0.0/16,1.2.0.0/16", 
    "IPAddress":"1.2.3.4,1.2.3.5,1.2.3.6,1.2.128.1", 
    "device":"device1,device2,device3,device1" 
} 

Я хочу, чтобы добавить новую запись в этот файл:

{ 
    "IPBlock":"1.2.0.0", 
    "IPAddress":"1.2.3.4", 
    "device":"device21" 
} 

Как я могу сделать это в Ruby?

ответ

1

Вы не можете сделать это без предварительного преобразования JSON в Ruby Hash.

current_json = JSON.parse('{ 
    "IPBlock":"1.2.0.0/16,1.2.0.0/16,1.2.0.0/16,1.2.0.0/16", 
    "IPAddress":"1.2.3.4,1.2.3.5,1.2.3.6,1.2.128.1", 
    "device":"device1,device2,device3,device1" 
}') 

new_json = JSON.parse('{ 
    "IPBlock":"1.2.0.0", 
    "IPAddress":"1.2.3.4", 
    "device":"device21" 
}') 

current_json.each do |key, value| 
    current_json[key] << ",#{new_json[key]}" 
end 

Это выводит следующий JSON:

{ 
    "IPBlock": "1.2.0.0/16,1.2.0.0/16,1.2.0.0/16,1.2.0.0/16,1.2.0.0", 
    "IPAddress": "1.2.3.4,1.2.3.5,1.2.3.6,1.2.128.1,1.2.3.4", 
    "device": "device1,device2,device3,device1,device21" 
} 

Интересно, что ваши значения для каждого ключа JSON являются один запятыми строка. Если начальные значения JSON были arrays, вы могли бы на самом деле просто добавить его в каждый массив:

current_json.each do |key, value| 
    current_json[key] << new_json[key] 
end 

Было бы также сделать как ваш код и данные в формате JSON немного чище.

Смежные вопросы