Link to home
Start Free TrialLog in
Avatar of Amos_Mike
Amos_Mike

asked on

How do i rename a key in JSONObject

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

Avatar of Michel Plungjan
Michel Plungjan
Flag of Denmark image

Perhaps add the new key with the value and remove the old ?
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

Avatar of Amos_Mike
Amos_Mike

ASKER

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?
trying to convey you probably need to copy the key and delete the old.

Anyway why do you want to rename?
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
And not easier to change the JS?
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.
If it is not a huge amount of data, ADD the data to a new key
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

ASKER CERTIFIED SOLUTION
Avatar of Michel Plungjan
Michel Plungjan
Flag of Denmark image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial