2015-12-22 2 views
2

У меня есть одна пара ключ-значение, которую мне нужно преобразовать в Json, используя Gson. Как я могу это сделать? Скажем, у меня естьединственное ключевое значение для Json с Gson

class MyClass{ 
    String key; 
    String value; 
    ...//bunch of other fields 

    public String singleKeyValueToJson(){ 
    return new Gson(key,value);//how do I do this? 
    } 

} 

Уведомление Я не сериализую весь класс: только два поля.

+0

вы можете использовать методы геттер-сеттер – Nisarg

+1

почему бы вам не создать JSON вручную, не используя библиотеку JSONObject = новый JSON JSONObject();. json.put (ключ, значение); возвращение JSON; –

+0

показать мне ваш json – Rahul

ответ

3

Почему бы вам не создать свой json вручную вместо использования библиотеки.

JsonObject json=new JsonObject(); 
json.put(key,value); 
return json; 
0

Вы можете использовать gson, как показано ниже:

public class MyClass { 

    private static final Gson gson = new Gson(); 

    String key; 
    String value; 

    public String singleKeyValueToJson() { 
     return gson.toJson(this); 
    } 

} 

Обратите внимание, что Gson является статическим, для снижения накладных расходов и является окончательным, для предотвращения создания еще одного экземпляра Gson.

0
For gson u can write like this 


public class MyClass { 
    String key; 
    public MyClass(String value) { 
     this.key = value; 
    } 
    public String getKey() { 
     return key; 
    } 

    public void setKey(String value) { 
     this.key = value; 
    } 
} 


Gson gson = new Gson(); 

MyClass data = new MyClass("ValueData"); 

String requestString = gson.toJson(data); 
1

Я использую библиотеку Google GSON com.google.gson.Gson и код будет простым и прямым
Как вы просто хотите, чтобы serailize в ключ-значение для него SimpleEntry лучше всего класса, и вы можете сделать это, как,

public String singleKeyValueToJson() 
    { 
     Gson jsonObj = new Gson(); 
     SimpleEntry<String,String > keyValue = new SimpleEntry<String, String>(this.key, this.value); 
     return jsonObj.toJson(keyValue); 
    } 

EDIT
Вы можете внести улучшения в использовании памяти с помощью одного экземпляра Gson объекта, если вам сериализуются очень часто или много раз.

1

Рассмотрим ваш класс, имеющий 3 переменную и метод, возвращающий JSONObject из всего 2-х переменных, как следует

class MyClass{ 
    String _value1 = "1234"; 
    int _value2 = 9100; 
    String _value3 = "5678"; 

    public String singleKeyValueToJson(){ 
     //add only selected variables to holder object(here HashMap), 
     HashMap<String,Object> map = new HashMap(); 
     map.put("key1",_value1); 
     map.put("key2",_value2); 
     //convert holder object to JSONObject directly and return as string as follows 
     return new Gson().toJson(map); 
    } 
} 

никогда не забывают добавить Gson LIB в свой проект, когда вы вызываете этот метод будет вернуться JSONObject в виде строки, как

{"key2":9100,"key1":"1234"} 
0
class A { 
public String key; 
public String value; 

public String singleKeyValueToJson() { 
     A als = new A(); 
     als.key= "text1"; 
     als.value= "text2"; 
     GsonBuilder builder = new GsonBuilder(); 
     Gson gson = builder.create(); 
     return gson.toJson(als);  
    } 
} 

и он будет возвращать одного ключа в Json с Gson

0

просто пытается вручную создать данные json. getJsonData() этот метод вернет json.

import org.json.JSONException; 
import org.json.JSONObject;  

class MyClass{ 
    private String key; 
    private String value; 

    public String getkey() { 
      return key; 
    } 

    public void setkey(String key) { 
      this.key = key; 
    }  

    public String getValue() { 
      return value; 
    } 

    public void setValue(String value) { 
      this.value = value ; 
    } 


    public JSONObject getJsonData(){ 

    JSONObject jsonObject = new JSONObject(); 

    try { 
     jsonObject.put(getKey(), getValue()); 

    } catch (JSONException e) { 
      e.printStackTrace(); 
    } 
    return jsonObject; 

    }  
} 
2

вы можете это сделать, используя @Expose аннотация.

import com.google.gson.annotations.Expose;

общественного класса Book {

@Expose 
private String author; 
@Expose 
private String title; 
private Integer year; 
private Double price; 

public Book() { 
    this("test.org", "Exclude properties with Gson", 1989, 49.55); 
} 

public Book(String author, String title, Integer year, Double price) { 
    this.author = author; 
    this.title = title; 
    this.year = year; 
    this.price = price; 
} 

}

импорт com.google.gson.Gson; import com.google.gson.GsonBuilder;

общественного класса WriteGson {

public static void main(String[] args) { 

    Gson gson = new GsonBuilder() 
      .excludeFieldsWithoutExposeAnnotation() 
      .create(); 

    String json = gson.toJson(new Book()); 
    System.out.println(json); 

    Gson gsonNonExcluded = new Gson(); 
    String jsonNonExcluded = gsonNonExcluded.toJson(new Book()); 
    System.out.println(jsonNonExcluded); 
} 

}

{ "автор": "тест.org "," title ":" Исключить свойства с помощью Gson "} {" author ":" test.org "," title ":" Исключить свойства с помощью Gson "," год ": 1989," цена ": 49.55}

Смежные вопросы