118 lines
2.7 KiB
Ucode
118 lines
2.7 KiB
Ucode
/**
|
|
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
|
|
*
|
|
* This is a generic JSON object in unrealscript
|
|
*/
|
|
class JsonObject extends Object
|
|
native;
|
|
|
|
|
|
/// COMMENT!!
|
|
|
|
|
|
var native Map_Mirror ValueMap{TMap<FString, FString>};
|
|
var native Map_Mirror ObjectMap{TMap<FString, UJsonObject*>};
|
|
|
|
var native array<string> ValueArray;
|
|
var native array<JsonObject> ObjectArray;
|
|
|
|
|
|
/**
|
|
* Looks up an object with the given key in the ObjectMap
|
|
*
|
|
* @param Key The key to search for
|
|
*
|
|
* @return A subobject/array inside this object
|
|
*/
|
|
native function JsonObject GetObject(const string Key);
|
|
|
|
/**
|
|
* Looks up a value with the given key in the ObjectMap. If it was a number
|
|
* in the Json string, this will be prepended with \# (see below helpers)
|
|
*
|
|
* @param Key The key to search for
|
|
*
|
|
* @return A string value
|
|
*/
|
|
native function string GetStringValue(const string Key);
|
|
|
|
/**
|
|
* @param Key the key to check on this object
|
|
*
|
|
* @return true if the key exists, false otherwise
|
|
*/
|
|
native function bool HasKey(const string Key);
|
|
|
|
/**
|
|
* Helper functions to convert special strings that the decoder will make from numbers
|
|
*/
|
|
event int GetIntValue(const string Key)
|
|
{
|
|
local string Value;
|
|
|
|
// look up the key, and skip the \#
|
|
Value = Mid(GetStringValue(Key), 2);
|
|
return int(Value);
|
|
}
|
|
|
|
event float GetFloatValue(const string Key)
|
|
{
|
|
local string Value;
|
|
|
|
// look up the key, and skip the \#
|
|
Value = Mid(GetStringValue(Key), 2);
|
|
return float(Value);
|
|
}
|
|
|
|
event bool GetBoolValue(const string Key)
|
|
{
|
|
local string Value;
|
|
|
|
// look up the key, and skip the \#
|
|
Value = Mid(GetStringValue(Key), 2);
|
|
return bool(Value);
|
|
}
|
|
|
|
|
|
/**
|
|
* Set an object
|
|
*/
|
|
native function SetObject(const string Key, JsonObject Object);
|
|
native function SetStringValue(const string Key, const string Value);
|
|
|
|
/**
|
|
* Helper functions to make special strings that the encoder will turn into numbers
|
|
*/
|
|
event SetIntValue(const string Key, int Value)
|
|
{
|
|
SetStringValue(Key, "\\#" $ Value);
|
|
}
|
|
|
|
event SetFloatValue(const string Key, float Value)
|
|
{
|
|
SetStringValue(Key, "\\#" $ Value);
|
|
}
|
|
|
|
event SetBoolValue(const string Key, bool Value)
|
|
{
|
|
SetStringValue(Key, "\\#" $ (Value ? "true" : "false"));
|
|
}
|
|
|
|
/**
|
|
* Encodes an object hierarchy to a string suitable for sending over the web
|
|
*
|
|
* @param Root The toplevel object in the hierarchy
|
|
*
|
|
* @return A well-formatted Json string
|
|
*/
|
|
static native function string EncodeJson(JsonObject Root);
|
|
|
|
/**
|
|
* Decodes a Json string into an object hierarchy (all needed objects will be created)
|
|
*
|
|
* @param Str A Json string (probably received from the web)
|
|
*
|
|
* @return The root object of the resulting hierarchy
|
|
*/
|
|
static native function JsonObject DecodeJson(const string Str);
|