我必须将数据从一台计算机传输到网络上连接的另一台计算机。可能要传输约10-20个值,具体取决于。我要做的就是打包/封送json中的值,然后通过http发布调用将其传输到另一台服务器(例如,这是网络上连接的另一台计算机)。假设从ServerA到ServerA的数据流从ServerA到ServerB,我必须打包所有数据以构造json,而在ServerB中,我必须解组该数据,这将占用我的大部分代码,如下所示

    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操作时,我感到很沉重,是否有更好的方法来避免/最小化此问题,这很轻巧?

最佳答案

当值为4-5时,当有更多数量的值(如20-25)时,这种方法就很轻巧了。如果您可以将所有必需的键硬编码到某种数据结构中,那可能会有所帮助。例如,在您的情况下,所有必需的键都是sid,rnumber,name,dayscholar等。

为密钥保留单独的硬编码数据结构

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 *库,那么您也可以以更舒适的方式处理问题。现在假设我们要访问数据,那么我们可以轻松地尝试诸如

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] ) );
}


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

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变量中反映一些更改。您必须意识到的是,您必须处理在代码中某个位置对所有键名进行硬编码的麻烦,是的,这将需要进行一些输入:),请让我知道这是否仍不足以帮助您你的情况

关于java - 通过HTTP调用将更多值从一台服务器传输到另一台服务器的最佳方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42704791/

10-12 03:28