(मैं JSON डेटा के लिए नया हूं इसलिए मेरी शब्दावली बिंदु पर नहीं हो सकती है) (यदि आप मेरे प्रश्न को नहीं समझते हैं तो कृपया टिप्पणी क्यों करें) मैं एक एपीआई से JSON डेटा ले रहा हूं और इसे .json फ़ाइल में संग्रहीत कर रहा हूं। जो डेटा आ रहा है वह इस प्रकार स्वरूपित है:

{
  "success": 1,
  "trails": [
    {
      "summary": "Grand, scenic views, begins fast \u0026 smooth, becomes very technical, epic singletrack.",
      "imgSmallMed": "https://cdn-files.apstatic.com/mtb/7000093_smallMed_1554393017.jpg",
      "latitude": 32.7071,
      "length": 10.3,
      "stars": 4.5,
      "type": "Ride",
      "starVotes": 2,
      "conditionDate": "1970-01-01 00:00:00",
      "difficulty": "black",
      "descent": -6257,
      "high": 9356,
      "ascent": 203,
      "conditionStatus": "Unknown",
      "low": 3303,
      "name": "Ash Creek",
      "location": "Swift Trail Junction, Arizona",
      "id": 7000218,
      "imgSqSmall": "https://cdn-files.apstatic.com/mtb/7000093_sqsmall_1554393017.jpg",
      "longitude": -109.9103
    },
    {
      "summary": "Roadside access and scenic views. Begins slow and smooth, then gets techy, followed by an adrenaline-pumping downhill!",
      "imgSmallMed": "",
      "latitude": 32.6626,
      "length": 3.1,
      "stars": 4,
      "type": "Ride",
      "starVotes": 1,
      "url": "https://www.mtbproject.com/trail/7050395/noon-creek-loop",
      "imgSmall": "",
      "imgMedium": "",
      "conditionDate": "1970-01-01 00:00:00",
      "difficulty": "black",
      "descent": -604,
      "high": 5711,
      "ascent": 585,
      "conditionStatus": "Unknown",
      "low": 5184,
      "name": "Noon Creek Loop",
      "location": "Swift Trail Junction, Arizona",
      "id": 7050395,
      "imgSqSmall": "",
      "longitude": -109.8013
    },
    {
      "summary": "Two short single tracks connected by old jeep trails with two excellent view points.",
      "imgSmallMed": "https://cdn-files.apstatic.com/mtb/7011629_smallMed_1554839996.jpg",
      "latitude": 32.6792,
      "length": 10.3,
      "stars": 3.5,
      "type": "Ride",
      "starVotes": 4,
      "conditionDate": "1970-01-01 00:00:00",
      "difficulty": "blue",
      "descent": -1127,
      "high": 9442,
      "ascent": 1130,
      "conditionStatus": "Unknown",
      "low": 8727,
      "name": "Grant Hill and Cunningham Trails",
      "location": "Swift Trail Junction, Arizona",
      "id": 3963377,
      "imgSqSmall": "https://cdn-files.apstatic.com/mtb/7011629_sqsmall_1554839996.jpg",
      "longitude": -109.8942
    }
  ]
}

मैं इस डेटा के माध्यम से क्रमबद्ध करने की कोशिश कर रहा हूं और बस प्रत्येक वस्तु का नाम, अक्षांश, देशांतर और कठिनाई प्राप्त कर रहा हूं। मैं एक .json फ़ाइल में मुद्रित या संग्रहीत करना चाहता हूं, प्रत्येक ऑब्जेक्ट के लिए "नाम", "कठिनाई", "अक्षांश" और "देशांतर" का मान है।

तो मैं क्या करना चाहता हूं कि मैं "ट्रेल्स" में प्रत्येक ऑब्जेक्ट के माध्यम से जाना चाहता हूं और "नाम", "कठिनाई", "अक्षांश", और "देशांतर" का मान प्राप्त करना चाहता हूं और उन मानों को एक txt फ़ाइल में संग्रहीत करना चाहता हूं। इसलिए एक लूप होना चाहिए जहां कोड "ट्रेल्स" में प्रत्येक ऑब्जेक्ट के माध्यम से चक्र करता है और "नाम", "कठिनाई", "अक्षांश" और "देशांतर" के मानों को पकड़ता है और संग्रहीत करता है। लेकिन क्या हो रहा है कि "ट्रेल्स" (उदा। "सारांश", "लंबाई", "स्टार्स") में प्रत्येक ऑब्जेक्ट के सभी मान txt फ़ाइल में एक लाइन (प्रत्येक ऑब्जेक्ट के अनुसार) पर संग्रहीत किए जा रहे हैं या बस के रूप में मुद्रित किया जा रहा है कंसोल के लिए एक पंक्ति। मुझे उन मूल्यों में से कुछ को अनदेखा करने की आवश्यकता है (उदा। "सारांश" को अनदेखा करें) और बस "नाम", "कठिनाई", "अक्षांश" और "देशांतर" प्राप्त करें। साथ ही "नाम", "कठिनाई", "अक्षांश", और "देशांतर" को अलग-अलग पंक्तियों में संग्रहीत करने में सक्षम हो। (मुझे आशा है कि यह स्पष्ट है) यह वही है जो उपरोक्त डेटा से संग्रहीत किया जाना चाहिए:

"latitude": 32.7071,
"difficulty": "black",    
"name": "Ash Creek",
"longitude": -109.9103
"latitude": 32.6626,
"difficulty": "black",
"name": "Noon Creek Loop",
"longitude": -109.8013
"latitude": 32.6792,
"difficulty": "blue",
"name": "Grant Hill and Cunningham Trails",
"longitude": -109.8942

मैं प्रत्येक वस्तु को अलग कर सकता हूं लेकिन मैं प्रत्येक वस्तु को क्रमबद्ध नहीं कर सकता और विशिष्ट मान प्राप्त नहीं कर सकता। यह वह कोड है जिस पर मैं काम कर रहा हूं:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

public class ReadJSON
{
    public static void main(String args[])
    {
        JSONParser parser = new JSONParser();
        try
        {
            Object object = parser.parse(new FileReader("trails6copy.json"));
            JSONObject jsonObject = (JSONObject)object;
            JSONArray trails = (JSONArray)jsonObject.get("trails");
            String sum = (String) trails.get(0);
            System.out.println(sum);
            for(Object trail : trails)
            {
                FileWriter writer = new FileWriter("trailSorter.txt",false);
                    writer.write(trail.toString());
                writer.close();     
            }
        }
        catch(FileNotFoundException fee)
        {
            fe.printStackTrace();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

कृपया सहायता कीजिए!!! मैं इस पर एक हफ्ते से अटका हुआ हूँ !!

1
Semi-okay Coder 25 मार्च 2020, 06:49

2 जवाब

आप क्या कर रहे हैं सभी ऑब्जेक्ट को स्ट्रिंग में कनवर्ट करना है, कि आपको वह परिणाम क्यों मिलता है।

आप जो foreach कर रहे हैं उसे बदलने की जरूरत है। मैं तत्वों तक पहुंचने के लिए ऑब्जेक्ट के बजाय JSONObject का उपयोग करने की अनुशंसा करता हूं।

for(JSONObject trail : trails)
        {
            String line = "Name: " + trail.get("name") + "Difficulty: " + trail.get("difficulty"); //Add all the elements you want
            FileWriter writer = new FileWriter("trailSorter.txt",false);
                writer.write(trail.toString());
            writer.close();     
        }
2
Carlos Estrada 25 मार्च 2020, 07:36
बहुत - बहुत धन्यवाद!!! मुझे कोड को थोड़ा बदलना पड़ा लेकिन आपने मुझे एक शुरुआती बिंदु दिया। बहुत - बहुत धन्यवाद! मैं सचमुच आपकी सहायता की सराहना करता हूं।
 – 
Semi-okay Coder
25 मार्च 2020, 07:48

यहां कामकाजी कोड है। धन्यवाद, कार्लोस एस्ट्राडा!

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

public class ReadJSONExample
{
    public static void main(String args[])
    {
        JSONParser parser = new JSONParser();
        try
        {
            Object object = parser.parse(new FileReader("trails6copy.json"));


            //convert Object to JSONObject
            JSONObject jsonObject = (JSONObject)object;
            JSONArray trails = (JSONArray)jsonObject.get("trails");
            //String sum = (String) trails.get(0);
            //System.out.println(sum);
            for (Iterator it = trails.iterator(); it.hasNext();) {
                JSONObject trail = (JSONObject) it.next();
                String line = "Name: " + trail.get("name") + "Difficulty: " + trail.get("difficulty"); //Add all the elements you want
                try (FileWriter writer = new FileWriter("trailSorter.txt",false)) {
                    writer.write(line.toString());
                }     
            }


        }
        catch(FileNotFoundException fe)
        {
            fe.printStackTrace();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}
0
Semi-okay Coder 25 मार्च 2020, 07:52