मैं जेसन को जावा बीन्स में पार्स करने के लिए जीसन का उपयोग कर रहा हूं। एपीआई के लिए मैं उपयोग कर रहा हूं, जेसन परिणामों की एक बड़ी संख्या में परिणाम एक जेसन ऑब्जेक्ट की पहली संपत्ति के रूप में शामिल है। "जीसन रास्ता" एक समकक्ष रैपर जावा ऑब्जेक्ट बनाने के लिए प्रतीत होता है, जिसमें लक्ष्य आउटपुट प्रकार के लिए एक संपत्ति है - लेकिन इसके परिणामस्वरूप अनावश्यक फेंकने वाले वर्ग होते हैं। क्या ऐसा करने का सबसे अच्छा तरीका है?जीएसन का उपयोग करते हुए जेसन का विश्लेषण करने का सबसे आसान तरीका क्या है जब पार्स तत्व तत्व जेसन स्ट्रिंग का तत्व है?
उदाहरण पार्स करने के लिए के लिए:
public class ParseProfile extends TestCase {
public void testParseProfile() {
Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
String profileJson = "{\"profile\":{\"username\":\"nickstreet\",\"first_name\":\"Nick\",\"last_name\":\"Street\"}}";
ProfileContainer profileContainer = gson.fromJson(profileJson, ProfileContainer.class);
Profile profile = profileContainer.getProfile();
assertEquals("nickstreet", profile.username);
assertEquals("Nick", profile.firstName);
assertEquals("Street", profile.lastName);
}
}
public class ProfileContainer {
protected Profile profile;
public Profile getProfile() {
return profile;
}
public void setProfile(Profile profile) {
this.profile = profile;
}
}
public class Profile {
protected String username;
protected String firstName;
protected String lastName;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
पाठ्यक्रम एक कंटेनर का उपयोग करने के लिए एक वैकल्पिक दृष्टिकोण मैन्युअल स्ट्रिंग के बाहरी हिस्से को हटाने के लिए होगा का
(यानी निकालें: {"profile":{"username":"nickstreet","first_name":"Nick","last_name":"Street"}}
मैं क्या करना है मानक प्रोफाइल स्ट्रिंग पार्सिंग तकनीकों का उपयोग करके "प्रोफ़ाइल": {और बंद}), लेकिन यह गलत दृष्टिकोण की तरह लगता है।
मैं की तरह कुछ करने के लिए सक्षम होने के लिए करना चाहते हैं:
Profile p = gson.fromJsonProperty(json, Profile.class, "profile");
This issue चलता है कि यह एक json वस्तु में एक json स्ट्रिंग को तोड़ने के लिए, इस वस्तु से एक jsonElement बाहर निकलने के लिए, और पारित संभव हो जाना चाहिए यह json.fromJson() में। हालांकि, toJsonElement() विधि केवल जावा ऑब्जेक्ट पर काम करती है, न कि एक जेसन स्ट्रिंग।
क्या किसी के पास बेहतर दृष्टिकोण है?
प्रतिक्रिया के लिए धन्यवाद। यह काफी सही नहीं है, लेकिन यह मुझे सही जवाब के लिए नेतृत्व किया। आप स्ट्रिंग के साथ सीधे जेसनऑब्जेक्ट नहीं बना सकते हैं, आपको इसे बनाने के लिए जेसन पार्सर का उपयोग करना होगा। जेसन पार्सर पार्सर = नया जेसन पार्सर(); जेसनऑब्जेक्ट जे = (जेसनऑब्जेक्ट) पार्सर.परसे (जेसन); –