Advertisement
worstbull

JSON Serialization

Feb 16th, 2025
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Linden Scripting 1.98 KB | Source Code | 0 0
  1. string listToJson(list inputList) {
  2.     list converted = [];
  3.     integer i;
  4.     integer len = llGetListLength(inputList);
  5.    
  6.     for (i = 0; i < len; i += 2) {
  7.         string key = llList2String(inputList, i);
  8.         string value;
  9.         integer type = llGetListEntryType(inputList, i + 1);
  10.        
  11.         if (type == TYPE_INTEGER || type == TYPE_FLOAT) {
  12.             value = llList2String(inputList, i + 1);
  13.         } else if (type == TYPE_STRING) {
  14.             value = "\"" + llList2String(inputList, i + 1) + "\"";
  15.         } else if (type == TYPE_VECTOR || type == TYPE_ROTATION) {
  16.             value = "\"" + llList2String(inputList, i + 1) + "\"";
  17.         } else if (inputList == [TRUE]) {
  18.             value = JSON_TRUE;
  19.         } else if (inputList == [FALSE]) {
  20.             value = JSON_FALSE;
  21.         } else {
  22.             value = JSON_NULL;
  23.         }
  24.        
  25.         converted += [key, value];
  26.     }
  27.  
  28.     return llList2Json(JSON_OBJECT, converted);
  29. }
  30.  
  31. list jsonToList(string json) {
  32.     list parsed = llJson2List(json);
  33.     list result = [];
  34.     integer i;
  35.     integer len = llGetListLength(parsed);
  36.  
  37.     for (i = 0; i < len; i += 2) {
  38.         string key = llList2String(parsed, i);
  39.         string value = llList2String(parsed, i + 1);
  40.  
  41.         if (value == JSON_TRUE) {
  42.             result += [key, TRUE];
  43.         } else if (value == JSON_FALSE) {
  44.             result += [key, FALSE];
  45.         } else if (value == JSON_NULL) {
  46.             result += [key, NULL_KEY];  // LSL kennt kein "null", daher NULL_KEY
  47.         } else {
  48.             result += [key, value];
  49.         }
  50.     }
  51.    
  52.     return result;
  53. }
  54.  
  55. default
  56. {
  57.     state_entry()
  58.     {
  59.         list myData = ["name", "Alice", "age", 25, "active", TRUE, "height", 1.75];
  60.  
  61.         string json = listToJson(myData);
  62.         llOwnerSay("Serialized JSON: " + json);
  63.  
  64.         list parsedList = jsonToList(json);
  65.         llOwnerSay("Deserialized List: " + llDumpList2String(parsedList, ", "));
  66.     }
  67. }
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement