के साथ जीसन का उपयोग करना मैं कुछ सर्वर कोड पर काम कर रहा हूं, जहां क्लाइंट JSON के रूप में अनुरोध भेजता है। मेरी समस्या यह है कि, कई संभावित अनुरोध हैं, सभी छोटे कार्यान्वयन विवरणों में भिन्न हैं। इसलिए मैं एक अनुरोध इंटरफ़ेस का उपयोग करने के लिए सोचा, के रूप में परिभाषित:इंटरफ़ेस प्रकार
public interface Request {
Response process ();
}
वहाँ से, मैं LoginRequest
नाम के एक वर्ग में इंटरफ़ेस प्रदर्शित के रूप में लागू:
public class LoginRequest implements Request {
private String type = "LOGIN";
private String username;
private String password;
public LoginRequest(String username, String password) {
this.username = username;
this.password = password;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
/**
* This method is what actually runs the login process, returning an
* appropriate response depending on the outcome of the process.
*/
@Override
public Response process() {
// TODO: Authenticate the user - Does username/password combo exist
// TODO: If the user details are ok, create the Player and add to list of available players
// TODO: Return a response indicating success or failure of the authentication
return null;
}
@Override
public String toString() {
return "LoginRequest [type=" + type + ", username=" + username
+ ", password=" + password + "]";
}
}
JSON के साथ काम करने के लिए, मेरे द्वारा बनाए गए एक GsonBuilder
उदाहरण और एक InstanceCreator
पंजीकृत दिखाया गया है:
public class LoginRequestCreator implements InstanceCreator<LoginRequest> {
@Override
public LoginRequest createInstance(Type arg0) {
return new LoginRequest("username", "password");
}
}
जो मैं तो के रूप में इस्तेमाल किया में दिखाया गया है नीचे स्निपेट:
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(LoginRequest.class, new LoginRequestCreator());
Gson parser = builder.create();
Request request = parser.fromJson(completeInput, LoginRequest.class);
System.out.println(request);
और मुझे अपेक्षित आउटपुट मिलता है।
मैं जिस चीज को करना चाहता हूं वह Request request = parser.fromJson(completeInput, LoginRequest.class);
को Request request = parser.fromJson(completeInput, Request.class);
जैसा कुछ है, लेकिन ऐसा करने से यह काम नहीं करेगा, क्योंकि Request
एक इंटरफ़ेस है।
मैं प्राप्त 0 JSप्राप्त JSON के आधार पर उचित प्रकार के अनुरोध को वापस करने के लिए चाहता हूं।
JSON मैं सर्वर से पारित कर दिया का एक उदाहरण नीचे दिखाया गया है:
{
"type":"LOGIN",
"username":"someuser",
"password":"somepass"
}
दोहराना के लिए, मैं एक तरह से ग्राहकों से अनुरोध (JSON में) पार्स करने और लागू करने वर्गों की वस्तुओं लौटने के लिए देख रहा हूँ Request
इंटरफ़ेस
क्या आप सर्वर से प्राप्त विभिन्न JSON प्रतिक्रियाओं के अन्य उदाहरण प्रदान कर सकते हैं? क्योंकि यदि आपके पास कई और बहुत अलग संभावनाएं नहीं हैं, तो कुछ ऐसा आसान है जो आप आसानी से कर सकते हैं ... – MikO
धन्यवाद आपके इनपुट के लिए @MiKO। अन्य संभावित अनुरोध 'PlayRequest',' LogoutRequest', 'GetPlayersRequest', 'JoinGameRequest',' StartGameRequest' आदि ... – fredmanglis
मेरा मतलब है कि यदि आप उन अन्य प्रकार के अनुरोधों में से कम से कम एक के लिए JSON अनुरोध का उदाहरण प्रदान कर सकते हैं । मेरा मतलब है, आपके 'loginRequest' के लिए आपके पास फ़ाइल्स हैं:' टाइप', 'उपयोगकर्ता नाम' और 'पासवर्ड', अन्य अनुरोधों के बारे में क्या? वो कैसे दिखते हैं? – MikO