কার্ল ব্যবহার করে কোনও অ্যারে দিয়ে জেসন বস্তুকে কীভাবে রাখবেন


98

ডাটাবেসে প্রবেশের জন্য আমার কাছে একটি সিরিজ ডেটা রয়েছে। ডেটা প্রবেশের জন্য ইউজার ইন্টারফেস বাল্ক এন্ট্রি জন্য ভাল নয়, তাই আমি একটি কমান্ড লাইন সমতুল্য গঠনের চেষ্টা করছি। আমি যখন ক্রোমে ইউআইয়ের নেটওয়ার্কের অনুরোধটি পরীক্ষা করি, আমি একটি জসন বস্তুর একটি PUT অনুরোধ দেখতে পাই। আমি যখন অনুরোধটি প্রতিলিপি করার চেষ্টা করি

curl -H 'Accept: application/json' -X PUT '{"tags":["tag1","tag2"],"question":"Which band?","answers":[{"id":"a0","answer":"Answer1"},{"id":"a1","answer":"answer2"}]}' http://example.com/service`

আমি একটি ত্রুটি পেয়েছি

কার্ল: (3) [গ্লোব্বিং] নেস্টেড ব্রেসগুলি পজ এক্স এ সমর্থিত নয়

যেখানে এক্স প্রথম "[" "- এর চরিত্রের অবস্থান।

আমি কীভাবে কোনও জসন বস্তুকে একটি অ্যারে অন্তর্ভুক্ত রাখতে পারি?

উত্তর:


151

আপনি কমান্ড লাইনে একটি পি / - ডেটা থাকা উচিত যা স্ট্রিংয়ের আগে আপনি পিউটিতে পাঠাতে চান এবং আপনি কনটেন্ট-টাইপ সেট করতে চান এবং স্বীকার করবেন না।

curl -H 'Content-Type: application/json' -X PUT -d '[JSON]' \
     http://example.com/service

প্রশ্ন থেকে সঠিক JSON ডেটা ব্যবহার করে, সম্পূর্ণ কমান্ড লাইনটি হয়ে উঠবে:

curl -H 'Content-Type: application/json' -X PUT \
    -d '{"tags":["tag1","tag2"],
         "question":"Which band?",
         "answers":[{"id":"a0","answer":"Answer1"},
                    {"id":"a1","answer":"answer2"}]}' \
    http://example.com/service

দ্রষ্টব্য: JSON ডেটা কেবল পাঠযোগ্যতার জন্য মোড়ানো, curlঅনুরোধের জন্য বৈধ নয় ।


4
-1 কারণ বিষয়বস্তু-ধরণ (গ্রহণের পরিবর্তে) শিরোনাম যা এই ক্ষেত্রে সেট করা উচিত।
গোরান

4
যারা ভাবছেন তাদের জন্য, [জেএসএন] কেবল জেএসএন স্ট্রিংয়ের একটি স্থানধারক। আপনার JSON স্ট্রিংয়ের চারপাশে অতিরিক্ত বর্গাকার বন্ধনী যুক্ত করবেন না।
মিহাই টডর

92

যদিও মূল পোস্টটিতে অন্যান্য সমস্যা ছিল (যেমন অনুপস্থিত "-ড"), ত্রুটি বার্তাটি আরও জেনেরিক।

কার্ল: (3) [গ্লোব্বিং] নেস্টেড ব্রেসগুলি পজ এক্স এ সমর্থিত নয়

এর কারণ কারণ কোঁকড়ানো ধনুর্বন্ধনী {} এবং বর্গাকার বন্ধনীগুলি [] কার্ল-এ বিশেষ গ্লোব্বিং অক্ষর। এই গ্লোববিংটি বন্ধ করতে, " -g " বিকল্পটি ব্যবহার করুন ।

উদাহরণস্বরূপ, নীচের সোলার ফ্যাক্ট ক্যোয়ারী "-g" ব্যতীত কার্ল গ্লোব্বিং বন্ধ করতে ব্যর্থ হবে : curl -g 'http://localhost:8983/solr/query?json.facet={x:{terms:"myfield"}}'


4
এটি -gপ্রত্যাশার মতো কাজ করে আমার জন্য সঠিক সমাধান ছিল । ধন্যবাদ @ ইয়োনিক
আর্জোনস

4
আমার মঙ্গল, আমি আমার গ্রাফকিউএল কার্ল সমস্যার সমাধান খুঁজছি এবং এটি আমাকে সহায়তা করেছে। অসাধারণ।
নেটওপ্রেটার উইব্বি

39

এটি উল্লেখ করা উচিত যে Acceptশিরোনামটি আমরা কী ফিরে গ্রহণ করছি সে সম্পর্কে সার্ভারকে কিছু জানায়, যখন এই প্রসঙ্গে প্রাসঙ্গিক শিরোনামContent-Type

এটা প্রায়ই উল্লেখ করা সমীচীন হবে Content-Typeযেমন application/jsonযখন JSON প্রেরণ। কার্লের জন্য সিনট্যাক্সটি হ'ল:

-H 'Content-Type: application/json'

সুতরাং সম্পূর্ণ কার্ল কমান্ডটি হ'ল:

curl -H 'Content-Type: application/json' -H 'Accept: application/json' -X PUT -d '{"tags":["tag1","tag2"],"question":"Which band?","answers":[{"id":"a0","answer":"Answer1"},{"id":"a1","answer":"answer2"}]}' http://example.com/service`

2

-G সহ ডাবল উদ্ধৃতিগুলির পরিবর্তে একক উদ্ধৃতি ব্যবহার করার চেষ্টা করুন

নিম্নলিখিত পরিস্থিতি আমার জন্য কাজ করে

curl -g -d '{"collection":[{"NumberOfParcels":1,"Weight":1,"Length":1,"Width":1,"Height":1}]}" -H "Accept: application/json" -H "Content-Type: application/json" --user test@testmail.com:123456 -X POST  https://yoururl.com

সঙ্গে

curl -g -d "{'collection':[{'NumberOfParcels':1,'Weight':1,'Length':1,'Width':1,'Height':1}]}" -H "Accept: application/json" -H "Content-Type: application/json" --user test@testmail.com:123456 -X POST  https://yoururl.com

এটি বিশেষত সমাধান আমার ত্রুটি কার্ল কমান্ড ত্রুটি: খারাপ url কোলন প্রথম চরিত্র


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.