2014-03-30 3 views
0

와 데이터를 조작 JSON 파일을 가져,이처럼 보이는 demo.json 파일이 :나는 루비 버전 2.0.0을 사용하고 루비

{ "demo": 
    { 
    "rama" : { "Name": "demo" }, 
    "krishna" : { "Name": "hare","place": "bharat", "hawa": { "maina": "tota"} } 
    } 
} 

지금은이 방법에 의해 JSON 파일을 조작하려고 :

require 'json' 
options = {} 
options[:demo] = "kailash" 
File.open("demo.json","w") do |f| 

    f.write(JSON.pretty_generate(options)) 

end 

기존의 JSON 파일에 일부 값을 바꾸고 새로운 키 - 값 쌍을 추가하고 전체 JSON 파일을 완전히 바꾸고 싶지 않습니다. 이 일을 할 수있는 방법이 있습니까?

+0

당신은 필요를 먼저 JSON :: parse 메소드를 사용하여 * hash * 객체를 얻는다. 그런 다음 * hash *를 반복하고 원하는 값을 업데이트하십시오. 끝나면'Hash # to_json' 메서드를 사용하여'JSON' 객체로 만든 다음 다시 파일에 씁니다. –

+0

이것을 코드 형식으로 써주시겠습니까? –

+0

'.json' 파일에서 업데이트 할 값을 알려주시겠습니까? –

답변

5

당신해야 먼저 읽고 다음을 변경, 파일을 구문 분석, 그리고 마지막으로 업데이트 된 객체 파일 덮어 쓸 수 있습니다 :

require 'json' 

options = JSON.parse(IO.read('demo.json')) 
options['demo']['kailash'] = { "Name" => "new" } 

File.open("demo.json","w") do |f| 

    f.write(JSON.pretty_generate(options)) 

end 

출력 파일 :

{ 
    "demo": { 
    "rama": { 
     "Name": "demo" 
    }, 
    "krishna": { 
     "Name": "hare", 
     "place": "bharat", 
     "hawa": { 
     "main": "tota" 
     } 
    }, 
    "kailash": { 
     "Name": "new" 
    } 
    } 
} 
+0

+1. 예. 코멘트에서 말했듯이이 문제를 해결하는 방법입니다. –

+0

쓰기가 약간 더 짧은 방법은'File.write ('demo.json', JSON.pretty_generate (options))' –

+0

하지만 "rama"와 같은 기존 키의 값을 업데이트하려면 어떻게해야합니까? –