diff --git a/xobject.go b/xobject.go index f9ae64c..2edfe93 100644 --- a/xobject.go +++ b/xobject.go @@ -24,6 +24,13 @@ func NewXoFromJsonStr(jsonStr string) *XObject { } } +func NewXoString(val string) *XObject { + p := new(XObject) + p._type = XOT_SIMPLE + p._val = NewXString(val) + return p +} + func (this *XObject) Size() int { if (this._type == XOT_ARRAY) { array := this._val.([]*XObject) @@ -43,6 +50,18 @@ func (this *XObject) GetType() int8 { return this._type } +func (this *XObject) IsSimple() bool { + return this.GetType() == XOT_SIMPLE +} + +func (this *XObject) IsArray() bool { + return this.GetType() == XOT_ARRAY +} + +func (this *XObject) IsObject() bool { + return this.GetType() == XOT_OBJECT +} + func (this *XObject) AsXValue() *XValue { if this._type == XOT_SIMPLE { if this._val == nil { @@ -92,6 +111,20 @@ func (this *XObject) HasKey(key string) bool { } } +func (this *XObject) GetSimpleStr(key string, defVal string) string { + if this.IsObject() { + val := this.At(key) + if val != nil { + if val.IsSimple() { + return val.AsXValue().GetString() + } else { + return defVal + } + } + } + return defVal +} + func (this *XObject) readFromJsonString(data string) bool { jsonType := JsonStrType(data) if jsonType == JSON_OBJECT {