import { SDKLog } from '../../util/SDKLog';
import { Utils } from '../../util/Utils';
import { Code } from '../http/response/Code';
import { Result } from '../http/response/Result';

export class JsonParser {
    private readonly TAG: string = "JsonParser";

    constructor() {}

    mapToJson(map: Map<string, string>): string {
        let ret: string = JSON.stringify(Object.fromEntries(map));
        return ret;
    }

    toJson(o: Object): string {
        let ret: string = JSON.stringify(o);
        return ret;
    }

    fromJson<T>(json: string): T {
        let ret: T = JSON.parse(json);
        return ret;
    }

    fromJsonToHttpResult<T>(json: string): Result<T> {
        let result = new Result<T>();
        if (!Utils.isHasContent(json)) {
            result.code = Code.ERR;
            result.msg = "server not response";
            SDKLog.e(this.TAG, result.msg);
            return result;
        }
        let temp: any = JSON.parse(json);
        result.code = temp.code;
        result.msg = temp.msg;
        if (result.code != Code.OK) {
            SDKLog.e(this.TAG, result.msg);
            return result;
        }
        result.data = temp.data;
        return result;
    }


}