Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json TypeScript/Angular 2创建动态对象反序列化器_Json_Angular_Typescript - Fatal编程技术网

Json TypeScript/Angular 2创建动态对象反序列化器

Json TypeScript/Angular 2创建动态对象反序列化器,json,angular,typescript,Json,Angular,Typescript,所以我来自C#的背景,在这里我可以用一种动态和反思的方式做事情,我试图将其应用到我正在编写的TypeScript类中。 在某些背景下,我正在将一个应用程序转换为一个web应用程序,而后端开发人员根本不想更改后端以很好地适应Json。所以他会把Json发回给我,看起来是这样的: { Columns: [ { "ColumnName": "ClientPK", "Label": "Client", "DataType": "int", "Length": 0, "

所以我来自C#的背景,在这里我可以用一种动态和反思的方式做事情,我试图将其应用到我正在编写的TypeScript类中。 在某些背景下,我正在将一个应用程序转换为一个web应用程序,而后端开发人员根本不想更改后端以很好地适应Json。所以他会把Json发回给我,看起来是这样的:

{
 Columns: [
  {
   "ColumnName": "ClientPK",
   "Label": "Client",
   "DataType": "int",
   "Length": 0,
   "AllowNull": true,
   "Format": "",
   "IsReadOnly": true,
   "IsDateOnly": null
  }
 ],
 Rows:[
  0
 ]
}
我希望编写一个Angular类来扩展响应,该类将有一个名为JsonMinimal的特殊方法,该方法将理解这些数据并为我返回一个对象

import { Response } from "@angular/http";

export class ServerSource
{ 
    SourceName: string;
    MoreItems: boolean;
    Error: string;
    ExtendedProperties: ExtendedProperty[];
    Columns: Column[];
}    

export class ServerSourceResponse extends Response
{ 



    JsonMinimal() : any
    { 

        return null; //Something that will be a blank any type that when returned I can perform `object as FinalObject` syntax
    }


}
我知道StackOverflow并不是为了寻求问题的完整解决方案,所以我只想问一个例子是什么——以这个例子中的数据为例,创建一个TypeScript不会对我大喊大叫的动态响应。我不知道该怎么办,这个开发人员有数千个服务器端方法,所有这些方法都以JSON或XML输出的形式返回字符串。我基本上是在寻找一种方法来获取他的列数据,并将其与适当的行数据相结合,然后有一个更大的对象来保存这些组合的对象

在将数据映射到基本对象之后,这里的用例如下所示。 例如:


var data=result.JsonMinimal()作为LoginResponse 我不确定我是否理解,但您可能想先尝试一种简单的方法。Angular的http get方法返回一个observable,它可以自动将响应映射到一个对象或一组对象。它还足够强大,可以执行一些自定义映射/转换。你可以先看看这个

以下是一个例子:

getProducts(): Observable<IProduct[]> {
    return this._http.get(this._productUrl)
        .map((response: Response) => <IProduct[]> response.json())
        .do(data => console.log('All: ' +  JSON.stringify(data)))
        .catch(this.handleError);
}
getProducts():可观察{
返回此。\ http.get(此。\产品URL)
.map((response:response)=>response.json())
.do(data=>console.log('All:'+JSON.stringify(data)))
.接住(这个.把手错误);
}

这里我将json响应映射到我用IPProduct接口定义的产品对象数组。因为这只是一个“lambda”类型的函数,所以我可以在这里添加任意数量的代码来转换数据。

我不确定自己是否理解,但您可能想先尝试一种简单的方法。Angular的http get方法返回一个observable,它可以自动将响应映射到一个对象或一组对象。它还足够强大,可以执行一些自定义映射/转换。你可以先看看这个

以下是一个例子:

getProducts(): Observable<IProduct[]> {
    return this._http.get(this._productUrl)
        .map((response: Response) => <IProduct[]> response.json())
        .do(data => console.log('All: ' +  JSON.stringify(data)))
        .catch(this.handleError);
}
getProducts():可观察{
返回此。\ http.get(此。\产品URL)
.map((response:response)=>response.json())
.do(data=>console.log('All:'+JSON.stringify(data)))
.接住(这个.把手错误);
}

这里我将json响应映射到我用IPProduct接口定义的产品对象数组。由于这只是一个“lambda”类型的函数,我可以在这里添加任意数量的代码来转换数据。

为什么要执行
var finalObject=Object.assign({},rawObject)?。另外,什么是
LoginResponse
?我认为您可能在这里过于复杂化了,但我不太清楚您想要实现什么。我还没有真正开始使用最初认为有用的代码。我将从代码示例中删除它。请注意,名为
JsonMinimal()
的函数不是返回JSON,而是返回一个对象。JSON是一种字符串格式。为什么要执行
var finalObject=Object.assign({},rawObject)?。另外,什么是
LoginResponse
?我认为您可能在这里过于复杂化了,但我不太清楚您想要实现什么。我还没有真正开始使用最初认为有用的代码。我将从代码示例中删除它。请注意,名为
JsonMinimal()
的函数不是返回JSON,而是返回一个对象。JSON是一种字符串格式。