জাভায় JSON অবজেক্টে হ্যাশম্যাপ কীভাবে রূপান্তর করা যায়


286

কীভাবে জাভায় JSON অবজেক্টে হ্যাশম্যাপ রূপান্তর বা কাস্ট করা যায় এবং আবার JSON অবজেক্টটিকে JSON স্ট্রিংয়ে রূপান্তর করতে পারে?

উত্তর:


435

তুমি ব্যবহার করতে পার:

new JSONObject(map);

সাবধানতা: এটি কেবল একটির জন্য কাজ করবেMap<String, String>!

অন্যান্য ফাংশনগুলি আপনি এর ডকুমেন্টেশন থেকে পেতে পারেন
http://stleary.github.io/JSON-java/index.html


85
এটি কেবল একটি স্ট্রিং, স্ট্রিং মানচিত্রের জন্য কাজ করে এবং কোনও জটিল স্ট্রিং, অবজেক্ট নয়।
স্লট

2
আপনি নির্বাণ হয় Mapমধ্যে JSONObjectকিন্তু কিভাবে আপনি JSONObject কে অবশ্যই থেকে এই মানচিত্রটি পেতে পারেন?
যুবরাজ

1
: এই শক্তি যদি আপনার সাহায্যের @Yubi stackoverflow.com/questions/21720759/convert-jsonobject-to-map
Hannoun Yassir

8
@ স্লট পুরানো সংস্করণগুলির জন্য সঠিক। কিটকাটের মতো নতুন সংস্করণগুলি হ্যাশম্যাপ <স্ট্রিং, অবজেক্ট> () এর মতো হ্যাশম্যাপ <স্ট্রিং, অবজেক্ট> () অবজেক্ট হিসাবে থাকা আরও জটিল বস্তুর সাথে দুর্দান্ত কাজ করছে। সুতরাং আমি গসনকে সুপারিশ করছি।
Luismi

আমি কেবল এটির জন্য সন্ধান করছিলাম
নাভেদ আহমদ

169

গসনকে যথেচ্ছ জটিল বস্তুগুলিকে সিরিয়ালাইজ করতেও ব্যবহার করা যেতে পারে।

আপনি এটি কীভাবে ব্যবহার করবেন তা এখানে:

Gson gson = new Gson(); 
String json = gson.toJson(myObject); 

Gsonসংগ্রহগুলিকে স্বয়ংক্রিয়ভাবে JSONঅ্যারেতে রূপান্তরিত করবে । গসন ব্যক্তিগত ক্ষেত্রগুলি সিরিয়ালাইজ করতে পারে এবং স্বয়ংক্রিয়ভাবে ক্ষণস্থায়ী ক্ষেত্রগুলি উপেক্ষা করে।


1
দ্রষ্টব্য: এটি নাল মান সহ কীগুলি সংরক্ষণ করে না।
বিকাশ

58

Json ব্যবহারের উদাহরণ

Map<String, Object> data = new HashMap<String, Object>();
    data.put( "name", "Mars" );
    data.put( "age", 32 );
    data.put( "city", "NY" );
    JSONObject json = new JSONObject();
    json.putAll( data );
    System.out.printf( "JSON: %s", json.toString(2) );

আউটপুট ::

JSON: {
  "age": 32,
  "name": "Mars",
  "city": "NY"
}

আপনি গুগলের জিএসওএন ব্যবহার করার চেষ্টা করতে পারেন। গুগলের জিএসওএন জাভা অবজেক্টগুলিকে তাদের জেএসএন উপস্থাপনায় রূপান্তর করার জন্য উপলব্ধ সেরা গ্রন্থাগার।

http://code.google.com/p/google-gson/


2
খনন জন্য দুঃখিত কিন্তু কি 2মধ্যে DO json.toString(2`)
জ্যাক

স্ট্রিং উপস্থাপনার জন্য পাবলিক স্ট্রিং টু স্ট্রিং (ইন র‌্যাডিক্স)। টু স্ট্রিং (2) ব্যবহৃত হয়। আরও স্ট্যাকওভারফ্লো
মোহাম্মাদ হোসেন

11
কোন JSONObject ক্লাস এটি?
জানুস ট্রোলসন

18
এ জাতীয় কোনও পদ্ধতি নেই: (নতুন org.json.JSONObject ()) put putAll ();
Zon

50

আপনি নিম্নলিখিত হিসাবে ব্যবহার করে রূপান্তর Mapকরতে পারেন :JSONJackson

Map<String,Object> map = new HashMap<>();
//You can convert any Object.
String[] value1 = new String[] { "value11", "value12", "value13" };
String[] value2 = new String[] { "value21", "value22", "value23" };
map.put("key1", value1);
map.put("key2", value2);
map.put("key3","string1");
map.put("key4","string2");

String json = new ObjectMapper().writeValueAsString(map);
System.out.println(json);

এর জন্য মাভেন নির্ভরতা Jackson:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.5.3</version>
    <scope>compile</scope>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.3</version>
    <scope>compile</scope>
</dependency>

আপনি যদি JSONObjectগ্রন্থাগার ব্যবহার করে থাকেন তবে আপনি মানচিত্রটিকে JSONনিম্নরূপে রূপান্তর করতে পারেন :

Map<String, Object> map = new HashMap<>();
// Convert a map having list of values.
String[] value1 = new String[] { "value11", "value12", "value13" };
String[] value2 = new String[] { "value21", "value22", "value23" };
map.put("key1", value1);
map.put("key2", value2);

JSONObject json = new JSONObject(map);
System.out.println(json);

এর জন্য মাভেন নির্ভরতা JSONObject:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20140107</version>
</dependency>

আশা করি এটি সাহায্য করবে। শুভ কোডিং।


1
আমি জানতাম না যে আমি মানচিত্রটিকে যুক্তি হিসাবে পাস করতে পারি, ধন্যবাদ, অনেক সাহায্য করেছিল।
গুর্খা

@ গুরখা প্রশংসা করার জন্য ধন্যবাদ।
অঙ্কুর মহাজন

1
নির্ভরতার সাথে যথাযথ উত্তর দেওয়ার জন্য @ আঙ্কুরমহাজান +1 :)
বদমান

1
স্ট্রিং জসন = নতুন অবজেক্টম্যাপার ()। WritValueAsString (মানচিত্র); গ্রেট
রোহিত লুথ্রা

7

আমার ক্ষেত্রে আমি কোনও নির্ভরতা চাইনি। জাভা 8 ব্যবহার করে আপনি JSON কে স্ট্রিং হিসাবে পেতে পারেন এই সাধারণ:

Map<String, Object> map = new HashMap<>();
map.put("key", "value");
map.put("key2", "value2");
String json = "{"+map.entrySet().stream()
    .map(e -> "\""+ e.getKey() + "\"" + ":\"" + String.valueOf(e.getValue()) + "\"")
    .collect(Collectors.joining(", "))+"}";

2
আপনি পালাতে পারবেন না ... যদি কী বা মানটি থাকে তবে "এই বিরতি
জানুস ট্রয়লসন

আপনি ঠিক বলেছেন, এই সমাধানটির কিছু নির্দিষ্ট সীমাবদ্ধতা রয়েছে, নেস্টেড মানচিত্রগুলিও সমর্থন করে না
আন্দ্রে সরুল

7

আপনি কেবল মানচিত্রটি গণনা করতে এবং কী-মান জোড়াটি JSONObject এ যুক্ত করতে পারেন

পদ্ধতি:

private JSONObject getJsonFromMap(Map<String, Object> map) throws JSONException {
    JSONObject jsonData = new JSONObject();
    for (String key : map.keySet()) {
        Object value = map.get(key);
        if (value instanceof Map<?, ?>) {
            value = getJsonFromMap((Map<String, Object>) value);
        }
        jsonData.put(key, value);
    }
    return jsonData;
}

1
কোনও অতিরিক্ত লাইব্রেরি ছাড়াই কোনও শর্টকাট এবং কার্যকরভাবে কাজ করছে না
মাভে ツ

মানচিত্র.এন্ট্রি <কে, ভি >> এন্ট্রিসেট () মানচিত্রের পুনরাবৃত্তির জন্য বোঝানো হয়েছে। কীগুলি পড়া এবং প্রতিটি কীটির জন্য মানচিত্রটি অনুসন্ধান করা একটি উপ-উপায় way
মার্টিন

7

ইন্ডসকোর-জাভা লাইব্রেরি হ্যাশ ম্যাপ বা অ্যারে তালিকাটিকে জসন এবং ভাইস শ্লোকে রূপান্তর করতে পারে।

import com.github.underscore.lodash.U;
import java.util.*;

public class Main {

    public static void main(String[] args) {

        Map<String, Object> map = new LinkedHashMap<>();
        map.put("1", "a");
        map.put("2", "b");

        System.out.println(U.toJson(map));
        // {
        //    "1": "a",
        //    "2": "b"
        // }
    }
}

5

পার্টিতে দেরীতে তবে হ্যাশম্যাপ সিরিয়ালাইজ করার জন্য আমার জিএসএন অ্যাডহক লেখক। আমাকে জেসন স্ট্রিং বৈশিষ্ট্য হিসাবে কী-মান জোড়ার মানচিত্র লিখতে হয়েছিল, একটি নির্দিষ্ট সংখ্যার পূর্ণসংখ্যার প্রত্যাশা করতে হবে। আমি এই সাধারণ ইউজকেসটির জন্য কাস্টম জাভাবিয়ান র‌্যাপার তৈরি করতে চাইনি।

GSON JsonWriter ক্লাসে কয়েকটি দৃ strongly়ভাবে টাইপ করা লেখক.মূল্য () ফাংশন সমন্বিত সিরিয়ালাইজ ক্লাস ব্যবহার করা সহজ।

// write Map as JSON document to http servlet response
Map<String,String> sd = DAO.getSD(123);
res.setContentType("application/json; charset=UTF-8");
res.setCharacterEncoding("UTF-8");
JsonWriter writer = new JsonWriter(new OutputStreamWriter(res.getOutputStream(), "UTF-8"));
writer.beginObject();
for(String key : sd.keySet()) {
    String val = sd.get(key);
    writer.name(key);
    if (key.equals("UniqueID") && val!=null)
        writer.value(Long.parseLong(val));
    else
        writer.value(val);
}
writer.endObject();
writer.close();

যদি কাস্টম ধরণের কোনওটির প্রয়োজন না হয় তবে আমি কেবলমাত্র জেসন () ফাংশনটি ব্যবহার করতে পারি। gson-2.2.4.jar লাইব্রেরিটি নিষ্ঠুর নির্ভরতা ছাড়াই মাত্র 190KB এর অধীনে। বড় কাঠামোর সংহত না করে যে কোনও কাস্টম সার্লেট অ্যাপ্লিকেশন বা স্বতন্ত্র অ্যাপ্লিকেশনটিতে ব্যবহার করা সহজ।

Gson gson = new Gson(); 
String json = gson.toJson(myMap); 

4

এটি সাধারণত একটি জসন লাইব্রেরির কাজ, আপনার নিজের এটি করার চেষ্টা করা উচিত নয়। সমস্ত জসন লাইব্রেরিতে আপনার যা চাওয়া হয়েছে তা কার্যকর করা উচিত এবং আপনি পৃষ্ঠার নীচে json.org এ জাভা জসন লাইব্রেরির একটি তালিকা পেতে পারেন ।


4

আমি এটি পরিচালনা করার অন্য একটি উপায় খুঁজে পেয়েছি।

Map obj=new HashMap();    
obj.put("name","sonoo");    
obj.put("age",new Integer(27));    
obj.put("salary",new Double(600000));   
String jsonText = JSONValue.toJSONString(obj);  
System.out.print(jsonText);

আশাকরি এটা সাহায্য করবে.

ধন্যবাদ।


3

আপনার প্রয়োজনে কোডটিতে এটি ব্যবহার করুন।

Gson gsone = new Gson();
JsonObject res = gsone.toJsonTree(sqlParams).getAsJsonObject();

3

যারা ব্যবহার করছেন তাদের জন্য org.json.simple.JSONObjectআপনি মানচিত্রটি জসন স্ট্রিংয়ে রূপান্তর করতে এবং এটি পেতে পার্স করতে পারেন JSONObject

JSONObject object = (JSONObject) new JSONParser().parse(JSONObject.toJSONString(map));

3

আগের চেয়ে বেশি দেরি করা ভাল। আপনি যদি সিরিয়ালযুক্ত তালিকা পেতে চান তবে আমি হাশম্যাপের তালিকাটিকে স্ট্রিংয়ে রূপান্তর করতে আমি জিএসএন ব্যবহার করেছি

List<HashMap<String, String>> list = new ArrayList<>();
HashMap<String,String> hashMap = new HashMap<>();
hashMap.add("key", "value");
hashMap.add("key", "value");
hashMap.add("key", "value");
list.add(hashMap);

String json = new Gson().toJson(list);

এটি jsonউত্পাদন করে[{"key":"value","key":"value","key":"value"}]


এটি প্রশ্নের উত্তর দেয় না। এটি JSON অ্যারে তৈরি করছে, কোনও JSON অবজেক্ট নয়। এবং ইতিমধ্যে অন্য কেউ হ্যাশম্যাপ ব্যবহার করে কীভাবে JSON অবজেক্ট তৈরি করবেন তা আমাদের দেখিয়েছে Gson
স্টিফেন সি

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

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

1
@KellyBudol ভাল বা খারাপ, আপনার উত্তর কি আমি for.thanks খুঁজছেন ম্যান
VD

2

GSON এর সাথে এখানে আমার একক-লাইন সমাধান:

myObject = new Gson().fromJson(new Gson().toJson(myHashMap), MyClass.class);

2

এই সমাধানটি জটিল জেএসওএনগুলির সাথে কাজ করে:

public Object toJSON(Object object) throws JSONException {
    if (object instanceof HashMap) {
        JSONObject json = new JSONObject();
        HashMap map = (HashMap) object;
        for (Object key : map.keySet()) {
            json.put(key.toString(), toJSON(map.get(key)));
        }
        return json;
    } else if (object instanceof Iterable) {
        JSONArray json = new JSONArray();
        for (Object value : ((Iterable) object)) {
            json.put(toJSON(value));
        }
        return json;
    }
    else {
        return object;
    }
}


1

আপনি এক্সস্ট্রিম ব্যবহার করতে পারেন - এটি সত্যই সহজ। উদাহরণ এখানে দেখুন

package com.thoughtworks.xstream.json.test;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;

public class WriteTest {

    public static void main(String[] args) {

      HashMap<String,String> map = new HashMap<String,String>();
      map.add("1", "a");
      map.add("2", "b");
      XStream xstream = new XStream(new JettisonMappedXmlDriver());

      System.out.println(xstream.toXML(map));       

    }

}

কিন্তু আপনি আপনার xstream বস্তুর যে কেউ ক্যাশে উচিত
জুস্ট

1

আপনি যদি ব্যবহার করছেন net.sf.json.JSONObjectতবে আপনি এতে কোনও JSONObject(map)নির্মাণকারী পাবেন না । আপনাকে public static JSONObject fromObject( Object object )পদ্ধতিটি ব্যবহার করতে হবে । এই পদ্ধতিটি JSON ফর্ম্যাটযুক্ত স্ট্রিংস, মানচিত্র, ডায়ানাবিয়ানস এবং জাভাবিয়ান গ্রহণ করে।

JSONObject jsonObject = JSONObject.fromObject(myMap);


1

আপনি যদি জটিল অবজেক্টগুলি ব্যবহার করেন তবে আপনার https://stackoverflow.com/a/24635655/2914140 এবং https://stackoverflow.com/a/26374888/2914140 তে বর্ণিত হিসাবে সক্ষম কমপ্লেক্সম্যাপকিএসরিয়ালাইজেশন () প্রয়োগ করা উচিত ।

Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
Map<Point, String> original = new LinkedHashMap<Point, String>();
original.put(new Point(5, 6), "a");
original.put(new Point(8, 8), "b");
System.out.println(gson.toJson(original));

আউটপুট হবে:

{
 "(5,6)": "a",
 "(8,8)": "b"
}

1

গসন বা জেএসএন পার্সিং গ্রন্থাগারগুলির প্রয়োজন নেই। কেবল ব্যবহার করে new JSONObject(Map<String, JSONObject>).toString(), যেমন:

/**
 * convert target map to JSON string
 *
 * @param map the target map
 * @return JSON string of the map
 */
@NonNull public String toJson(@NonNull Map<String, Target> map) {
    final Map<String, JSONObject> flatMap = new HashMap<>();
    for (String key : map.keySet()) {
        try {
            flatMap.put(key, toJsonObject(map.get(key)));
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    try {
        // 2 indentSpaces for pretty printing
        return new JSONObject(flatMap).toString(2);
    } catch (JSONException e) {
        e.printStackTrace();
        return "{}";
    }
}

ব্যতিক্রম গিলে ফেলা এবং একটি খালি বস্তু ফিরিয়ে দেওয়া একটি খারাপ ধারণা।
স্টিফেন সি

1
    import org.json.JSONObject;

    HashMap<Object, Object> map = new HashMap<>();
    String[] list={"Grader","Participant"};
    String[] list1={"Assistant","intern"};
    map.put("TeachingAssistant",list);
    map.put("Writer",list1);
    JSONObject jsonObject = new JSONObject(map);
    System.out.printf(jsonObject.toString());

    // Result: {"TeachingAssistant":["Grader","Participant"],"Writer":["Assistant","intern"]}

এটি কেবল পূর্ববর্তী উত্তরটি পুনরাবৃত্তি করছে।
স্টিফেন সি

1

আপনার যদি সত্যিই হ্যাশম্যাপের প্রয়োজন না হয় তবে আপনি এরকম কিছু করতে পারেন:

String jsonString = new JSONObject() {{
  put("firstName", user.firstName);
  put("lastName", user.lastName);
}}.toString();

আউটপুট:

{
  "firstName": "John",
  "lastName": "Doe"
}

হ্যাঁ ঠিক. তবে, প্রশ্নটি একটি থেকে শুরু করেHashMap একটি JSON অবজেক্ট তৈরি করার জন্য একটি উপায় জিজ্ঞাসা করে , এবং এটি এর উত্তর দেয় না।
স্টিফেন সি

কিছু লোক জেনেরিক সমাধানের জন্য গুগল থেকে এখানে অবতরণ করতে পারে। উপরের উত্তর তাদের সাহায্য করতে পারে।
রাফাল এডেন

1

আমি সহজ এবং সহজ আলিবাবা ফাস্টজসন ব্যবহার করছি:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>VERSION_CODE</version>
</dependency>

এবং আমদানি:

import com.alibaba.fastjson.JSON;

তারপর:

String text = JSON.toJSONString(obj); // serialize
VO vo = JSON.parseObject("{...}", VO.class); //unserialize

সবকিছু ঠিক আছে.


1

আপনি যদি JSR 374 ব্যবহার করছেন: JSON প্রসেসিংয়ের জন্য জাভা API (জাভাক্স জেসসন) এটি কৌশলটি মনে হচ্ছে:

    JsonObjectBuilder job = Json.createObjectBuilder((Map<String, Object>) obj);
    JsonObject jsonObject = job.build();

0

আপনি গসন ব্যবহার করতে পারেন । এই লাইব্রেরিটি জাভা অবজেক্টগুলিকে JSON অবজেক্ট এবং তদ্বিপরীত রূপান্তর করার জন্য সহজ পদ্ধতি সরবরাহ করে।

উদাহরণ:

GsonBuilder gb = new GsonBuilder();
Gson gson = gb.serializeNulls().create();
gson.toJson(object);

যখন আপনি ডিফল্ট ব্যতীত অন্য কোনও কনফিগারেশন বিকল্প সেট করতে হয় আপনি একটি গসনবিল্ডার ব্যবহার করতে পারেন। উপরের উদাহরণে রূপান্তর প্রক্রিয়াটি অবজেক্ট থেকে নাল বৈশিষ্ট্যগুলিও সিরিয়ালাইজ করবে।

যাইহোক, এই পদ্ধতিরটি কেবল অ-জেনেরিক প্রকারের জন্য কাজ করে। জেনেরিক প্রকারের জন্য আপনাকে জসন (অবজেক্ট, টাইপ) ব্যবহার করতে হবে।

গসন সম্পর্কে আরও তথ্য এখানে

মনে রাখবেন যে অবজেক্টটি অবশ্যই সিরিয়ালাইজেবল ইন্টারফেসটি প্রয়োগ করবে ।


0

এটি আমার পক্ষে কাজ করে:

import groovy.json.JsonBuilder
properties = new Properties()
properties.put("name", "zhangsan")

println new JsonBuilder(properties).toPrettyString()

1
এটি গ্রোভির প্রশ্ন নয়।
স্টিফেন সি

@ স্টিফেন-সি জাভা একটি ভাষা প্ল্যাটফর্ম নয় কেবল গ্রোভি একটি জার।
jiahut

আপনার প্রশ্নের কোডটি জাভা নয়। যদি সেই কোডটি সত্যিই আপনার জন্য কাজ করে তবে আপনি জাভা ব্যবহার করছেন না। জাভাতে "মুদ্রণ" বিবৃতি নেই এবং আপনি এর মতো ভেরিয়েবল ঘোষণা করতে পারবেন না। আমার অনুমান যে আপনি গ্রোভি ব্যবহার করছেন তবে আমি নিশ্চিত নই। যে কোনও উপায়ে, জাভা কোডে জাভা লাইব্রেরির পরিবর্তে গ্রোভি লাইব্রেরি ব্যবহার করার জন্য লোকদের পরামর্শ দেওয়া ... কোনও ভাল ধারণা নয়।
স্টিফেন সি

0

TypeToken.getParameterized পদ্ধতি ব্যবহার করে আরও জটিল জটিল মানচিত্র এবং তালিকাগুলির জন্য জিএসন উপায়:

আমাদের কাছে এমন একটি মানচিত্র রয়েছে যা দেখে মনে হচ্ছে:

Map<Long, List<NewFile>> map;

উপরের উল্লিখিত getParameterized পদ্ধতিটি ব্যবহার করে আমরা টাইপটি পাই :

Type listOfNewFiles = TypeToken.getParameterized(ArrayList.class, NewFile.class).getType();
Type mapOfList = TypeToken.getParameterized(LinkedHashMap.class, Long.class, listOfNewFiles).getType();

এবং তারপরে জসন পদ্ধতিটি থেকে জসন পদ্ধতিটি এই জাতীয় মানচিত্রঅফলিট অবজেক্টটি ব্যবহার করে ব্যবহার করুন :

Map<Long, List<NewFile>> map = new Gson().fromJson(fileContent, mapOfList);

উল্লিখিত অবজেক্ট নিউফাইলে দেখে মনে হচ্ছে:

class NewFile
{
    private long id;
    private String fileName;

    public void setId(final long id)
    {
        this.id = id;
    }

    public void setFileName(final String fileName)
    {
        this.fileName = fileName;
    }
}

Deserialized JSON এর মতো দেখাচ্ছে:

{
  "1": [
    {
      "id": 12232,
      "fileName": "test.html"
    },
    {
      "id": 12233,
      "fileName": "file.txt"
    },
    {
      "id": 12234,
      "fileName": "obj.json"
    }
  ],
 "2": [
    {
      "id": 122321,
      "fileName": "test2.html"
    },
    {
      "id": 122332,
      "fileName": "file2.txt"
    },
    {
      "id": 122343,
      "fileName": "obj2.json"
    }
  ]
}


-1

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

আপনি যদি স্কেলার সাথে পরিচিত হন এবং জেএসএনের জন্য প্লে-এপিআই ব্যবহার করেন তবে আপনি এতে উপকৃত হতে পারেন:

import play.api.libs.json.{JsValue, Json}
import scala.collection.JavaConversions.mapAsScalaMap


object JsonParser {

  def parse(map: Map[String, Any]): JsValue = {
    val values = for((key, value) <- map) yield {
      value match {
        case m: java.util.Map[String, _] @unchecked => Json.obj(key -> parse(m.toMap))
        case m: Map[String, _] @unchecked => Json.obj(key -> parse(m))
        case int: Int => Json.obj(key -> int)
        case str: String => Json.obj(key -> str)
        case bool: Boolean => Json.obj(key -> bool)
      }
    }

    values.foldLeft(Json.obj())((temp, obj) => {
      temp.deepMerge(obj)
    })
  }
}

ছোট কোডের বিবরণ:

কোডটি হ্যাশম্যাপের মাধ্যমে পুনরাবৃত্তভাবে অনুসরণ করে যতক্ষণ না প্রাথমিক ধরণের (স্ট্রিং, পূর্ণসংখ্যা, বুলিয়ান) সন্ধান পাওয়া যায়। এই মৌলিক প্রকারগুলি সরাসরি একটি জেসোবজেক্টে আবৃত হতে পারে। যখন পুনরাবৃত্তিটি উদ্ঘাটন করা হয়, তখন গভীর নিমজ্জন তৈরি হওয়া বস্তুগুলিকে সম্মতি দেয়।

'@ অচিরাচরিত' মুছে ফেলা সতর্কতার ধরণগুলির যত্ন নেয়।


এটি কোনও স্কেলার প্রশ্ন নয়
স্টিফেন সি

-1

প্রথমে আপনার সমস্ত বস্তুকে বৈধ স্ট্রিংগুলিতে রূপান্তর করুন

HashMap<String, String> params = new HashMap<>();
params.put("arg1", "<b>some text</b>");
params.put("arg2", someObject.toString());

তারপরে একটি org.json.JSONObject এ পুরো মানচিত্রটি .োকান

JSONObject postData = new JSONObject(params);

এখন আপনি কেবলমাত্র অবজেক্টের টাসস্ট্রিং কল করে জেএসএন পেতে পারেন

postData.toString()
//{"arg1":"<b>some text<\/b>" "arg2":"object output"}

একটি নতুন JSONObject তৈরি করুন

JSONObject o = new JSONObject(postData.toString());

অথবা এইচটিটিপি প্রেরণের জন্য বাইট অ্যারে হিসাবে

postData.toString().getBytes("UTF-8");

এটি সংক্ষিপ্ত হওয়ার সুবিধা ছাড়াই বছর আগে আগের উত্তরগুলির মতো একই কথা বলছে।
স্টিফেন সি

@ স্টেফেনসি আপনি কী সম্পর্কে যাচ্ছেন তা সম্পর্কে আমার কোনও ধারণা নেই
G_V

@ স্টেফেনসি "কীভাবে জাভায় জেএসওএন অবজেক্টে হ্যাশম্যাপ রূপান্তর করতে বা কাস্ট করতে হয়, এবং আবার জেএসএন অবজেক্টকে জেএসএন স্ট্রিংয়ে রূপান্তর করতে পারি?"
জি_ভি

362 জন লোক (এবং গণনা করছে) মনে করে যে স্ট্যাকওভারফ্লো . com/a/12155874/139985 প্রশ্নের উত্তর দিয়েছে। এটি মূলত বলেছে আপনার উত্তর কী বলে বিড়ম্বনা বিট ছাড়াই।
স্টিফেন সি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.