আমি জেসনকে পার্স করার জন্য "জেকিউ" এর সাথে পরিচিত।
আমি এমন একটি পরিষেবা নিয়ে কাজ করি যা একটি জসন প্রতিক্রিয়া তৈরি করে যেখানে বৈশিষ্ট্যগুলির মধ্যে একটি নিজেই একটি জসন স্ট্রিং। আমি কীভাবে সেই উদ্ধৃত মানটিকে একটি বৈধ জসন স্ট্রিংয়ে রূপান্তর করব যাতে আমি এরপরে JQ দিয়ে প্রক্রিয়া করতে পারি?
উদাহরণস্বরূপ, আমি যদি কেবল "জিকিউ" থেকে সমতল সুন্দর প্রিন্টেড জসনটি দেখি তবে আউটপুটটির একটি সংক্ষিপ্ত অংশ এখানে দেওয়া হয়েছে:
"someJsonString": "{\"date\":\"2018-01-08\", ...
আমি সেই সম্পত্তিটির মান পেতে jq ব্যবহার করতে পারি, তবে উদ্ধৃত স্ট্রিংটি "আনসকেপিং" করে বৈধ জসনকে রূপান্তর করতে হবে।
আমি মনে করি যে আমি এটিকে সিডে পাইপ করতে পেরে, ডাবল উদ্ধৃতিটি খোলার এবং শেষ করে এবং সমস্ত ব্যাকস্ল্যাশগুলি (" sed -e 's/^"//' -e 's/"$//' -e 's/\\//g'
") মুছে ফেলতে পারি । এটি কাজ করে বলে মনে হচ্ছে তবে এটি সবচেয়ে শক্তিশালী সমাধানের মতো বলে মনে হচ্ছে না।
আপডেট :
আমি যা করছি সে সম্পর্কে একটু পরিষ্কার হওয়ার জন্য, আমি এখানে কয়েকটি পরীক্ষামূলক নমুনা দেখিয়েছি যা আমি চেষ্টা করেছি যা দেখায়:
% curl -s -q -L 'http://.../1524.json' | jq '.results[0].someJsonString' | jq .
"{\"date\":\"2018-01-08\",...
% echo $(curl -s -q -L 'http:/.../1524.json' | jq '.results[0].someJsonString') | jq .
"{\"date\":\"2018-01-08\",...
আপডেট :
এখানে সম্পূর্ণরূপে একক উদাহরণ:
% cat stuff.json | jq .
{
"stuff": "{\"date\":\"2018-01-08\"}"
}
% cat stuff.json | jq '.stuff'
"{\"date\":\"2018-01-08\"}"
% cat stuff.json | jq '.stuff' | jq .
"{\"date\":\"2018-01-08\"}"
আপডেট :
আমি যদি সত্যিকারের জকিউ এক্সপ্রেশন দিয়ে সেই শেষ আউটপুটটি প্রক্রিয়া করার চেষ্টা করি তবে এটি এমন কিছু করে:
% cat stuff.json | jq '.stuff' | jq '.date'
assertion "cb == jq_util_input_next_input_cb" failed: file "/usr/src/ports/jq/jq-1.5-3.x86_64/src/jq-1.5/util.c", line 371, function: jq_util_input_get_position
Aborted (core dumped)
echo $(jq statement here)
?
jq
পেতে ব্যবহার করেন তবে এটি কী অপরিবর্তিত রয়েছে? যদি তা হয় তবে কেবল এটি একটি তাজাতে পাইপ করুন ।jq