স্ট্রিংটি JSON অ্যারেতে রূপান্তর করুন


91

ওয়েব সার্ভিস থেকে আমার কাছে JSON এর নীচের স্ট্রিং রয়েছে এবং এটিকে এটিকে রূপান্তর করার চেষ্টা করছি JSONarray

{
    "locations": [
        {
            "lat": "23.053",
            "long": "72.629",
            "location": "ABC",
            "address": "DEF",
            "city": "Ahmedabad",
            "state": "Gujrat",
            "phonenumber": "1234567"
        },
        {
            "lat": "23.053",
            "long": "72.629",
            "location": "ABC",
            "address": "DEF",
            "city": "Ahmedabad",
            "state": "Gujrat",
            "phonenumber": "1234567"
        },
        {
            "lat": "23.053",
            "long": "72.629",
            "location": "ABC",
            "address": "DEF",
            "city": "Ahmedabad",
            "state": "Gujrat",
            "phonenumber": "1234567"
        },
        {
            "lat": "23.053",
            "long": "72.629",
            "location": "ABC",
            "address": "DEF",
            "city": "Ahmedabad",
            "state": "Gujrat",
            "phonenumber": "1234567"
        },
        {
            "lat": "23.053",
            "long": "72.629",
            "location": "ABC",
            "address": "DEF",
            "city": "Ahmedabad",
            "state": "Gujrat",
            "phonenumber": "1234567"
        }
    ]
}

আমি Stringএটি অনলাইনে যাচাই করেছি , এটি সঠিক বলে মনে হচ্ছে। এখন আমি ব্যবহার করতে অ্যান্ড্রয়েড বিকাশে নিম্নলিখিত কোডটি ব্যবহার করছি

JSONArray jsonArray = new JSONArray(readlocationFeed);

এটি ব্যতিক্রম একটি ধরণের অমিল ব্যতিক্রম ছোঁড়ে।


ডেটা টাইপ কি readlocationFeed?
ইগোরগানাপলস্কি

4
@ আইগরগানাপলস্কি, স্ট্রিং
অ্যান্ড্রু নো

উত্তর:


161

এখানে আপনি JSONObject পান তাই এই লাইনটি পরিবর্তন করুন:

JSONArray jsonArray = new JSONArray(readlocationFeed); 

নিম্নলিখিত সহ:

JSONObject jsnobject = new JSONObject(readlocationFeed);

এবং তারপর

JSONArray jsonArray = jsnobject.getJSONArray("locations");
for (int i = 0; i < jsonArray.length(); i++) {
    JSONObject explrObject = jsonArray.getJSONObject(i);
}

লক্ষ্য করেছেন যে JSONObject এর জন্য নির্মাতা পুরানো দেখায় এবং
স্ট্রিংকে

jsnobject JSONObject কে অবশ্যই হতে পারে - বানান :)
DragonFire

41

ইনপুট স্ট্রিং

[
   {
      "userName": "sandeep",
      "age": 30
   }, 
   {
      "userName": "vivan",
      "age": 5
   }
]

স্ট্রিং থেকে জেএসএনে রূপান্তর করার সহজ উপায়

public class Test
{

    public static void main(String[] args) throws JSONException
    {
        String data = "[{\"userName\": \"sandeep\",\"age\":30},{\"userName\": \"vivan\",\"age\":5}]  ";
        JSONArray jsonArr = new JSONArray(data);

        for (int i = 0; i < jsonArr.length(); i++)
        {
            JSONObject jsonObj = jsonArr.getJSONObject(i);

            System.out.println(jsonObj);
        }

    }
}

আউটপুট

{"userName":"sandeep","age":30}
{"userName":"vivan","age":5}

23

জেসন লাইব ব্যবহার:

String data="[{"A":"a","B":"b","C":"c","D":"d","E":"e","F":"f","G":"g"}]";
Object object=null;
JSONArray arrayObj=null;
JSONParser jsonParser=new JSONParser();
object=jsonParser.parse(data);
arrayObj=(JSONArray) object;
System.out.println("Json object :: "+arrayObj);

জিএসওএন লাইব ব্যবহার:

Gson gson = new Gson();
String data="[{\"A\":\"a\",\"B\":\"b\",\"C\":\"c\",\"D\":\"d\",\"E\":\"e\",\"F\":\"f\",\"G\":\"g\"}]";
JsonParser jsonParser = new JsonParser();
JsonArray jsonArray = (JsonArray) jsonParser.parse(data);

এটি গুগল জিএসনের জন্য কাজ করা হবে না? আপনি এই জন্য সাহায্য করতে পারেন?
প্র_এ

@ পশতিকা .. দয়া করে আপনার সমস্যাটি দিয়ে ব্যাখ্যা করুন..তখন আমি তার জন্য চেষ্টা করতে পারি।
অরবিন্দ চেককাল্লুর

@ পশতিকা ..আমি আপনি জিএসওএন জারটি ব্যবহার করতে পারেন এবং আপনার স্ট্রিংটিকে জসনে রূপান্তর করতে পারেন
অরবিন্দ চেককাল্লুর

4
২ য় কোড স্নিপেটে কোনও ভুল আছে বলে মনে হচ্ছে, যেহেতু gsonবস্তুটি তৈরি হয়েছে তবে ব্যবহৃত হয়নি।
Dev-iL

শুধু প্রথম লাইন উপেক্ষা করুন। এটি এর সাথে কাজ করে Gson gson = new Gson();
ফ্রিজ-প্লেমেকার

16

আপনার JSONObjectপরিবর্তে প্রদত্ত স্ট্রিংগুলিকে রূপান্তর করতে হবে JSONArrayকারণ বর্তমান স্ট্রিংয়ের পরিবর্তে JsonObjectমূল উপাদান হিসাবে থাকা JsonArray:

JSONObject jsonObject = new JSONObject(readlocationFeed);

5
String b = "[" + readlocationFeed + "]";
JSONArray jsonArray1 = new JSONArray(b);
jsonarray_length1 = jsonArray1.length();
for (int i = 0; i < jsonarray_length1; i++) {

}

বা এটি JSONOBJECT এ রূপান্তর করুন

JSONObject jsonobj = new JSONObject(readlocationFeed);
JSONArray jsonArray = jsonobj.getJSONArray("locations");

স্ট্রিং ম্যানিপুলেশন অন্য দিক থেকে চিন্তা করার এক দুর্দান্ত উপায় - এই সমস্যা সম্পর্কিত
ড্রাগনফায়ার

4

এই কোডের টুকরোটি ব্যবহার করে দেখুন:

try {        
    Log.e("log_tag", "Error in convert String" + result.toString());
    JSONObject json_data = new JSONObject(result);

    String status = json_data.getString("Status");
    {
        String data = json_data.getString("locations");
        JSONArray json_data1 = new JSONArray(data);
        for (int i = 0; i < json_data1.length(); i++) {
            json_data = json_data1.getJSONObject(i);

            String lat = json_data.getString("lat");
            String lng = json_data.getString("long");
        }
    }
}

3

প্রতিক্রিয়া যদি এই মত হয়

"GetDataResult": "[{\"UserID\":1,\"DeviceID\":\"d1254\",\"MobileNO\":\"056688\",\"Pak1\":true,\"pak2\":true,\"pak3\":false,\"pak4\":true,\"pak5\":true,\"pak6\":false,\"pak7\":false,\"pak8\":true,\"pak9\":false,\"pak10\":true,\"pak11\":false,\"pak12\":false}]"

আপনি এভাবে পার্স করতে পারেন

JSONObject jobj=new JSONObject(response);
        String c = jobj.getString("GetDataResult");         
        JSONArray jArray = new JSONArray(c);
        deviceId=jArray.getJSONObject(0).getString("DeviceID");

এখানে জসনআরাই আকার size



1

এটি রূপান্তর করার খুব সহজ উপায়:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;


class Usuario {
private String username;
private String email;
private Integer credits;
private String twitter_username;

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public Integer getCredits() {
    return credits;
}

public void setCredits(Integer credits) {
    this.credits = credits;
}

public String getTwitter_username() {
    return twitter_username;
}

public void setTwitter_username(String twitter_username) {
    this.twitter_username = twitter_username;
}

@Override
public String toString() {
    return "UserName: " + this.getUsername() + " Email: " + this.getEmail();
}

}

/*
 * put string into file jsonFileArr.json
 * [{"username":"Hello","email":"hello@email.com","credits"
 * :"100","twitter_username":""},
 * {"username":"Goodbye","email":"goodbye@email.com"
 * ,"credits":"0","twitter_username":""},
 * {"username":"mlsilva","email":"mlsilva@email.com"
 * ,"credits":"524","twitter_username":""},
 * {"username":"fsouza","email":"fsouza@email.com"
 * ,"credits":"1052","twitter_username":""}]
 */

public class TestaGsonLista {

public static void main(String[] args) {
    Gson gson = new Gson();
    try {
        BufferedReader br = new BufferedReader(new FileReader(
                "C:\\Temp\\jsonFileArr.json"));
        JsonArray jsonArray = new JsonParser().parse(br).getAsJsonArray();
        for (int i = 0; i < jsonArray.size(); i++) {
            JsonElement str = jsonArray.get(i);
            Usuario obj = gson.fromJson(str, Usuario.class);
            System.out.println(obj);
            System.out.println(str);
            System.out.println("-------");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}


4
অনুগ্রহ করে মন্তব্য হিসাবে পাঠ্য হিসাবে প্রবন্ধ যুক্ত করে উত্তরটি উন্নত করুন।
রিচার্ড এরিকসন

0

যদি ওয়েব পরিষেবা থেকে জেএসওন অনুসরণ করে থাকে তবে জসন অ্যারে প্রতিক্রিয়া হিসাবে:

       [3]
 0:  {
 id: 2
 name: "a561137"
 password: "test"
 firstName: "abhishek"
 lastName: "ringsia"
 organization: "bbb"
    }-
1:  {
 id: 3
 name: "a561023"
 password: "hello"
 firstName: "hello"
  lastName: "hello"
  organization: "hello"
 }-
 2:  {
  id: 4
  name: "a541234"
  password: "hello"
  firstName: "hello"
  lastName: "hello"
  organization: "hello"
    }

এটি প্রথমে একটি জসন অ্যারে হিসাবে গ্রহণ করতে হবে, তার পড়ার সময় তার অবজেক্টটি পড়তে গেলে অবজেক্ট ম্যাপার.রেডভ্যালুটি ব্যবহার করতে হবে, কারণ স্ট্রিংতে জসন অবজেক্ট এখনও স্টিল রয়েছে।

      List<User> list = new ArrayList<User>();
      JSONArray jsonArr = new JSONArray(response);


      for (int i = 0; i < jsonArr.length(); i++) {
        JSONObject jsonObj = jsonArr.getJSONObject(i);
         ObjectMapper mapper = new ObjectMapper();
        User usr = mapper.readValue(jsonObj.toString(), User.class);      
        list.add(usr);

    }

mapper.read হ'ল সঠিক ফাংশন, যদি আপনি mapper.convers (প্যারাম, পরম) ব্যবহার করেন। এটি আপনাকে ত্রুটি দেবে।


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