اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

لغة JSON هي طريقة للتواصل بين لغات البرمجة المختلفة. عن طريقها يمكنك كتابة كود في PHP ومن ثم تحويل المعلومات لـ Ruby وبعدها لـ JavaScript بكل سهولة. للعمل بـ JSON، تحتاج اولاً الى ترجمتها الى اللغة التي تعمل بها. على سبيل المثال، اذا كان عندك كائن في JSON، فعليك اولاً تحويله الى Hash ليعمل بداخل Ruby.

لذا، لا يمكنك قراءة محتوى ملف JSON والعمل به فوراً. عليك اولاً ترجمته  باستخدام مكتبة JSON بهذا الشكل:

require 'json'

# قراءة محتوى الملف
plain = File.read('./db.json')

# قم بالترجمة
json = JSON.load(plain)

# الآن يمكنك القراءة بسهولة
puts json['name']

# يمكنك ايضاً تحويل الى JSON مرة أخرى هكذا
JSON.generate({:hello => "world"});

 

  • 0
نشر

لنفرض أن لديك البيانات بشكل JSON 

res  = {"status":"ok',"result":{"id":5851,"title":"Json In Ruby","photo":"300312577_abc.png"}}

لا يمكن الوصول لعناصر JSON مباشرة من السلسلة بل يجب عمل parsing لها (تفسيرها لغرض json) أي بناء غرض مصفوفة يمثلها وكمثال:

#!/usr/bin/env ruby

require 'rubygems'
require 'json'

res  = {"status":"ok',"result":{"id":5851,"title":"Json In Ruby","photo":"300312577_abc.png"}}

newRes = JSON.parse(res)

puts newRes['status']

puts newRes['id']

حيث استعملنا الدالة JSON.parse .

مثال لجلب البيانات من الانترنت باتصال HTTP

uri = URI.parse("some_url")
req = Net::HTTP::Post.new(uri.request_uri)

req.set_form_data('field1' => 'data1', 'field2' => 'data2' )    

res = Net::HTTP.start(uri.host, uri.port) do |http|
        http.request(req)
      endcase res

 when Net::HTTPSuccess, Net::HTTPRedirection
      puts "OK"
      puts res.body
      puts status = JSON.parse(res.body)['status']
      puts tuid = JSON.parse(res.body)['result']['tuid']
  else   
      puts res.message
  end

 

  • 0
نشر

لابد من تسطيب مكتبة json أولا 
 

gem install json

ثم كتابة الكود 
 

require 'json'

file = File.read('./file-name-to-be-read.json')# قراءة file 
data_hash = JSON.parse(file) # Hash تحويل إلي 

# نفترض أن هذا شكل file 

# {
#   "author":"Isaac Asimov",
#   "url":"https://isaacbooks.com",
#   "books":
#     {
#       "1":"Fantastic Voyage",
#       "2":"The Robots of Dawn",
#       "3": "Pebble In The Sky"
#     }
# }

puts data_hash['author'] # => author

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...