Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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
JavaScript从外部REST API映射JSON数据_Javascript_Json_Rest_Design Patterns_Mapping - Fatal编程技术网

JavaScript从外部REST API映射JSON数据

JavaScript从外部REST API映射JSON数据,javascript,json,rest,design-patterns,mapping,Javascript,Json,Rest,Design Patterns,Mapping,对于我正在构建的web应用程序的前端,我使用restfulweb服务获取数据。此类呼叫和响应可能如下所示: // GET api.example.com/persons/3 { p_id: 3, p_fn: 'Jon', p_ln: 'Smith', p_addr: { str: 'Baker Street', city: 'London', cntry: 'GB' }, // and more st

对于我正在构建的web应用程序的前端,我使用restfulweb服务获取数据。此类呼叫和响应可能如下所示:

// GET api.example.com/persons/3
{
    p_id: 3,
    p_fn: 'Jon',
    p_ln: 'Smith',
    p_addr: {
        str: 'Baker Street',
        city: 'London',
        cntry: 'GB'
    },
    // and more stuff...
}
我的应用程序中不需要所有这些数据,所以我决定将它们映射到我自己的类中。这还提供了重命名和重新构造属性、与外部API分离以及添加一些方法的功能:

class Person {

    name: {
        first: string,
        last: string
    };
    country: string;

    getFullName(): string {
        return this.name.first + ' ' + this.name.last;
    }

}
此示例使用TypeScript,但也可以使用ES6类创建

在我想要更改此对象的属性之前,这一切都很正常

例如,
人的国家必须改变,因为他搬到了法国。他的名字也被编辑了,因为有一个错误:

person.country = 'FR'
person.name.first = 'John'
现在,必须将更改发送回外部服务:

//PUT api.example.com/persons/3
{
p_id:3,
p_fn:‘约翰’,
p_ln:‘史密斯’,
地址:{
街:'贝克街',
城市:“伦敦”,

cntry:'FR'//这就是我的示例的不同之处如果您将数据发送回,并且它是更新而不是补丁,那么您的类应该包含更新资源所需的所有属性


如何为类创建一个传递JSON的方法?以及一个将属性解析为正确格式的JSON的toJSON类方法。

这个toJSON方法看起来如何?更改需要与旧的JSON合并,旧的JSON必须存储在某个地方。而将其存储在类中可能不是很有效。