We help IT Professionals succeed at work.

How do i rename a key in JSONObject

Amos_Mike
Amos_Mike asked
on
Medium Priority
7,310 Views
Last Modified: 2013-11-08
i am trying to rename  "displayName" key to"text",

where key "dispalyname" is a part of JSONArray which is nested in JSONObject.

like:

{"jsonText":[

{"description":"Employee","displayName":"Guillaumin, Xavier","email":"xguillaumin@hersheys.com","location":"Carretera GDL-ElCastilloKM8.05","title":"Financial Coordinator Global Exports","userId":"HERXGG40"},

{"description":"Former Employee","displayName":"Lugo, Javier","email":"JLugo@Hersheys.com","location":"","title":"Special Projects Manager","userId":"HERJEL40"},

{"description":"Employee","displayName":"Plitnick, Xavier F","email":"HFXFP001@hersheys.com","location":"6 Scotch Pine Drive","title":"HZ_1526_Mst Wrap Mech","userId":"HFXFP001"}

]}


Can anyone suggest way to rename ?
JSONArray jsonArray = new JSONArray();
			JSONObject jsonObj = new JSONObject();
			try {
				Collection<User> user = UserManager.getInstance()
						.findUsersByName(name);
				
                               jsonArray.addAll(user);
 
				jsonObj.put("jsonText", jsonArray);
			} catch (Exception e) {
				e.printStackTrace();
			}
 
			String jsonString = jsonObj.toString();
			System.out.println(jsonString);

Open in new window

Comment
Watch Question

Michel PlungjanIT Expert
CERTIFIED EXPERT
Top Expert 2009

Commented:
Perhaps add the new key with the value and remove the old ?
Michel PlungjanIT Expert
CERTIFIED EXPERT
Top Expert 2009

Commented:
In JS:



<script>
 jsonText = [ { "description" : "Employee",
        "displayName" : "Guillaumin, Xavier",
        "email" : "xguillaumin@hersheys.com",
        "location" : "Carretera GDL-ElCastilloKM8.05",
        "title" : "Financial Coordinator Global Exports",
        "userId" : "HERXGG40"
      },
      { "description" : "Former Employee",
        "displayName" : "Lugo, Javier",
        "email" : "JLugo@Hersheys.com",
        "location" : "",
        "title" : "Special Projects Manager",
        "userId" : "HERJEL40"
      },
      { "description" : "Employee",
        "displayName" : "Plitnick, Xavier F",
        "email" : "HFXFP001@hersheys.com",
        "location" : "6 Scotch Pine Drive",
        "title" : "HZ_1526_Mst Wrap Mech",
        "userId" : "HFXFP001"
      }
    ] 
jsonText[0].text=jsonText[0].displayName
delete jsonText[0].displayName;
    
alert(jsonText[0].text)    
alert(jsonText[0].displayName)    
</script>

Open in new window

Author

Commented:
mplugjan

"jsonText" is a part of JSON object, it's a key in Json Object. I am sorry,  I cudn't figure out what are you trying to convey?
Michel PlungjanIT Expert
CERTIFIED EXPERT
Top Expert 2009

Commented:
trying to convey you probably need to copy the key and delete the old.

Anyway why do you want to rename?

Author

Commented:
K got your point..
Thanks , but the change i am trying to do is on server side i.e.  in a servlet.
So i don't think this will help.

I am passing this JSON object to my javascript and there my jquery will read it for an JSONsuggest function.
my JS file for JSON suggest (plugin in jquery) expects the searchdata key to be "text", that's why i need to rename it from displayName to text
Michel PlungjanIT Expert
CERTIFIED EXPERT
Top Expert 2009

Commented:
And not easier to change the JS?

Author

Commented:
I know that could be the solution, but the thing is i am using that specific key from JS at other places in my application.
Moreover i was curious if there's a workaround, for what i have asked.
Michel PlungjanIT Expert
CERTIFIED EXPERT
Top Expert 2009

Commented:
If it is not a huge amount of data, ADD the data to a new key

Author

Commented:
i got the solution, i sat and applied my brain's deepest nerves to get it working in JAVA servlet itself.
I am calling this mapBeans fxn, and replacing my fields from JSONArray.
this fxn references the UserMappingBean which has getter and setter for Text field.
It works fine for me.
Thanks for the help.
private Collection<UserMappingBean> mapBeans(Collection<User> users) {
		List<UserMappingBean> beans = new LinkedList<UserMappingBean>();
		
		for (User user: users) {
			UserMappingBean b = new UserMappingBean();
			b.setText(user.getDisplayName());
			beans.add(b);
		}

Open in new window

IT Expert
CERTIFIED EXPERT
Top Expert 2009
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.