首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过HTTP调用将更多值从一个服务器传输到另一个服务器的最佳方式是什么?

通过HTTP调用将更多值从一个服务器传输到另一个服务器的最佳方式是什么?
EN

Stack Overflow用户
提问于 2017-03-10 04:29:24
回答 1查看 78关注 0票数 0

我必须将数据从一台机器传输到连接到网络上的另一台机器。可能有10-20个值需要转移,这要看情况。我所要做的就是打包/编组json中的值,并通过http post调用将其传输到另一台服务器(比如连接到网络上的另一台机器)。假设数据在ServerA中从ServerA流向ServerB,我必须打包所有数据来构造json,并且在ServerB中我必须对其进行解组,这会消耗掉我的大部分代码,如下所示

代码语言:javascript
复制
    String student_id = json.getString("sid");
    String student_role_number = json.getString("rnumber");
    String student_name = json.getString("name");
    String isDayScholar = json.optString("dayscholar", "false"); 
    String stream = json.optString("stream", ""); 
    String class_section = json.getString("section");

当值是4-5时,它很轻,当有更多像20-25这样的值时,我觉得做这个get/set operations.Is相当繁重,有没有更好的方法来避免/最小化这种情况?

EN

回答 1

Stack Overflow用户

发布于 2017-03-10 04:46:27

当值是4-5时,它是轻量级的,当有更多的值时,比如20-25,如果你能在某些数据结构中硬编码所有必需的键,那么这可能会有帮助。例如,在您的示例中,所有必需的键都是sid、rnumber、name、dayscholar等。

为您的键保留一个单独的硬编码数据结构

代码语言:javascript
复制
org.json.JSONObject jsonObject = new org.json.JSONObject();
java.util.Map<String , Object> otherMap = new java.util.HashMap<>();

String[] myLovedKeys = {"sid" , "rnumber" , "name" , "dayscholar" , "stream" , "section"};
for( int x = 0; x < myLovedKeys.length; x++ )
{  
    if( myLovedKeys[x].equals("dayscholar") || myLovedKeys[x].equals("stream") )
    {
        String value = "";
        if( myLovedKeys[x].equals("dayscholar") )
        {
            value = json.optString( myLovedKeys[x] , "false" );
            jsonObject.put( myLovedKeys[x] , value );
            otherMap.put( myLovedKeys[x] , value );
        }
        else
        {
           value = json.optString( myLovedKeys[x] , "" ); // stream key-value
           jsonObject.put( myLovedKeys[x] , value );
           otherMap.put( myLovedKeys[x] , value );
        }
    }
    else
    {
        String keyValue = json.getString( myLovedKeys[x] ); 
        jsonObject.put( myLovedKeys[x] , keyValue );
        otherMap.put( myLovedKeys[x] , keyValue );
    }
}

这将允许您准确地知道当前在循环中正在处理哪个键,并且您可以根据您感兴趣的键来处理不同的行为

现在我声明了一个JSONObject和一个java.util.Map,因为我只是想详细说明这样一个事实:如果您缺少org.json.*库,那么您可以通过使用java.util.Map轻松逃脱,但是如果您有org.json*库,那么您也可以以一种更舒适的方式处理问题。现在假设我们想要访问数据,那么我们可以很容易地尝试如下操作

代码语言:javascript
复制
for( int x = 0; x < myLovedKeys.length; x++ )
{
    System.out.println( "java.util.Map: [" myLovedKeys[x] + "=" + otherMap.get( myLovedKeys[x] ) );
    System.out.println( "org.json.JSONObject: " + myLovedKeys[x] + "=" + jsobObject.getJSONObject( myLovedKeys[x] ) );  
}

以类似的方式,您可以修改和更新这些值

代码语言:javascript
复制
otherMap.put( myLovedKeys[0] , "SomeValue");
otherMap.put( myLovedKeys[1] , "Other Value" );
otherMap.put( "sid" , "SomeValue" );
otherMap.put( "rnumber" , "toSomeName");
//myLovedKeys[0] = "sid" , myLovedKeys[1] = "rnumber"

类似地,您可以在jsonObject变量中反映一些更改。您必须认识到的是,您必须处理在代码中某处硬编码所有键名的痛苦,是的,这将需要一些输入:),如果这仍然不足以帮助您的情况,请让我知道

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42704791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档